2014-12-01 43 views
12

Używam systemu Windows Server 2012 i IIS 8.5. Ustawiłem SSL dla witryny, a Ustawienia SSL to: Wymagaj Wymagań i Wymagaj Certyfikatów Klienta.IIS 8.5 - Autentyczne uwierzytelnianie za pomocą certyfikatów nie powiodło się z błędem 403.16

Certyfikat klienta, który wysyłam do serwera, został wystawiony przez autopodpisany autorytet (nazwijmy to MyCompany CA). Certyfikat CA MyCompany został pomyślnie zainstalowany na koncie komputera lokalnego - Zaufane główne urzędy certyfikacji. Data wygaśnięcia to 2039, a więc data wygaśnięcia certyfikatu klienta.

Jednak przy całej tej konfiguracji otrzymuję błąd 403.16 jako wynik. Mam włączone Failed żądania Tracing Rules i udało się zalogować błędny wniosek i dostał kilka dodatkowych szczegółów o tym:

52.- MODULE_SET_RESPONSE_ERROR_STATUS - ostrzeżenie ModuleName - IIS Web rdzenia zgłoszenia - BEGIN_REQUEST httpStatus - 403 HttpReason - Forbidden HttpSubStatus - 16 ErrorCode - Łańcuch certyfikatów został przetworzony, ale zakończony certyfikatem głównym, który nie jest zaufany przez dostawcę zaufania. (0x800b0109) ConfigExceptionInfo

Sprawdziłem wiele witryn dotyczących kod 0x800b0109 wynik 403.16 i błędów, a wszystkie z nich zwraca się do urzędu certyfikacji nie został zainstalowany na komputerze lokalnym - Trusted Root Certification Authorities, ale to nie moja sprawa.

Dzięki!

Odpowiedz

40

Pracuję nad tym od dawna i wreszcie go znalazłem!

Dodaj nowy klucz HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL nazwy Wartość: ClientAuthTrustMode typ wartości: REG_DWORD Dane wartości: 2

Odśwież stronę, wybierz certyfikat i oglądać magii zdarzyć.

Badania

Korzystanie z Windows 8 i IIS 8.5 I przestrzegać instrukcji tutaj http://itq.nl/testing-with-client-certificate-authentication-in-a-development-environment-on-iis-8-5/.

Certyfikaty zostały utworzone we właściwym miejscu i wszystko poprawnie skonfigurowane w IIS, ale ciągle otrzymywałem błędy 403,16.

Po wielu artykułach MSDN i innych próbach nie powiodło się, znalazłem następujące ustawienie rejestru.

Set HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL Wartość Nazwa: ClientAuthTrustMode Typ wartości: REG_DWORD Dane wartości: 2

Set HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL nazwy Wartość : SendTrustedIssuerList typ wartości: REG_DWORD dane wartości: 0 (fałsz, albo całkowicie usunąć ten klucz)

Oto trochę więcej informacji na temat tego konkretnego ustawienia (tutaj: http://technet.microsoft.com/en-us/library/hh831771.aspx)

Ustawienia domyślne dla trybów zaufania Istnieją trzy tryby zaufania uwierzytelniania klienta obsługiwane przez dostawcę Schannel. Tryb zaufania kontroluje sposób sprawdzania poprawności łańcucha certyfikatów klienta i jest ogólnosystemowym ustawieniem kontrolowanym przez REG_DWORD "ClientAuthTrustMode" w HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ Schannel.

0 Zaufanie maszyny (domyślnie) Wymaga, aby certyfikat klienta był wydany przez certyfikat na liście Zaufani wystawcy.

1 Ekskluzywna Zaufana Podstawa Wymaga, aby certyfikat klienta był połączony z certyfikatem głównym zawartym w zaufanym magazynie wystawcy, określonym przez wywołującego. Certyfikat musi również zostać wystawiony przez wystawcę na liście Zaufani wydawcy.

2 Wyłączne zaufanie CA Wymaga, aby łańcuch certyfikatów klienta był pośrednim certyfikatem CA lub certyfikatem głównym w zaufanym sklepie wystawcy określonym przez wywołującego. Aby uzyskać informacje o błędach uwierzytelniania spowodowanych problemami konfiguracji zaufanych wystawców, zobacz artykuł bazy wiedzy nr 280256.

Nadzieję, że ta praca również dla Ciebie.

+1

Po dodaniu certyfikatu do magazynu wystawców uwierzytelnień klienta musiałem zrestartować komputer. YMMV. – Timores

+0

Oprócz tej odpowiedzi naprawiającej mój problem w 2012 roku, stwierdziłem, że muszę to zrobić również na moim Windows Server 2008 R2/IIS 7.5. Na podstawie twojego opisu problemu i faktu, że na tym pudełku otrzymywałem 403,7 zamiast 403.16, nie myślałem, że to by miało znaczenie, ale tak się stało. Dzięki! – rusty

+1

ClientAuthTrustMode Typ wartości: REG_DWORD Dane wartości: 2 - Nie działa dla mnie Windows 2012 R2. Nadal dostaję błąd 403.16. – mit

1

Musiałem ponownie uruchomić serwer, aby zastosować ustawienie ClientAuthTrustMode.

0

Próbowałem rozwiązania sugerowanego powyżej i działa dobrze.

Alternatywnym rozwiązaniem, które nie wymaga edycji rejestru:

https://support.microsoft.com/en-us/help/2795828/lync-server-2013-front-end-service-cannot-start-in-windows-server-2012

Głównym punktem z tego artykułu jest usunięcie wszystkich certyfikatów non-podpisany z lokalnego Trusted Computer folderze głównym.

Jeśli używasz zasad grupy do wdrożenia certyfikatów, upewnij się, że Zaufane główne urzędy certyfikacji przechowywać zawiera tylko certyfikatów z podpisem własnym (certyfikaty, w którym nieruchomość certyfikat „Temat” jest taka sama jak właściwość certyfikatu „Emitent”). Przenieś wszystkie certyfikaty, które nie są certyfikatami z podpisem własnym, z magazynu Zaufane główne urzędy certyfikacji do magazynu pośrednich urzędów certyfikacji.

Jeśli importujesz nowe certyfikaty ręcznie, upewnij się, że wybrano Zaufane główne urzędy certyfikacji na Komputera przechowywać do certyfikatów z podpisem własnym i Intermediate urzędy certyfikacji szeregowego komputera zapisać do certyfikatów, które nie autopodpisywany certyfikaty.

Można znaleźć wszystko non-self podpisanych certyfikatów za pomocą skryptu PowerShell:

Get-Childitem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject} | Format-List * | Out-File "c:\computer_filtered.txt" 

przenieść te certs do pośredniego urzędów certyfikacji w folderze MMC.

+0

Dobra odpowiedź na podobnych liniach pod adresem http://stackoverflow.com/a/35001970/237568 zawiera również szablon One-liner PowerShell, który przenosi certyfikaty bez samopodpisania do foldera pośrednich urzędów certyfikacji :) –