it-swarm.com.de

Die gegenseitige Zertifikatauthentifizierung schlägt mit dem Fehler 403.16 fehl

Ich verwende Windows Server 2012 und IIS 8.5. Ich habe SSL für die Website festgelegt und die SSL-Einstellungen lauten: Erforderlich und Clientzertifikate erforderlich.

Das Clientzertifikat, das ich an den Server sende, wurde von einer selbstsignierten Instanz ausgestellt (nennen wir es MyCompany CA). Das MyCompany CA-Zertifikat wurde erfolgreich unter dem Konto des lokalen Computers - Vertrauenswürdige Stammzertifizierungsstellen installiert. Das Ablaufdatum ist 2039, ebenso das Ablaufdatum des Clientzertifikats.

Bei all diesen Einstellungen bekomme ich jedoch einen Fehler 403.16 als Ergebnis. Ich habe die Regeln für die Rückverfolgbarkeit von Anforderungsprotokollen aktiviert und es ist mir gelungen, eine fehlerhafte Anforderung zu protokollieren und erhielt einige zusätzliche Details dazu:

52.- MODULE_SET_RESPONSE_ERROR_STATUS - Warnung Modulname - IIS Web Core Benachrichtigung - BEGIN_REQUEST HttpStatus - 403 HttpReason - Verboten HttpSubStatus - 16 .__ verarbeitet, aber in einem Stammzertifikat beendet, dem der Vertrauensanbieter nicht vertraut. (0x800b0109) ConfigExceptionInfo

Ich habe mehrere Websites bezüglich des Ergebnisses 403.16 und des Fehlercodes 0x800b0109 überprüft und alle weisen darauf hin, dass die Zertifizierungsstelle nicht in Lokaler Computer - Vertrauenswürdige Stammzertifizierungsstellen installiert ist. Dies ist jedoch nicht mein Fall.

Vielen Dank!

14
Javier Holguera

Ich habe lange daran gearbeitet und es endlich gefunden! 

Fügen Sie zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL .__ einen neuen Schlüssel hinzu. Wertname: ClientAuthTrustMode Werttyp: REG_DWORD Wertdaten: 2

Aktualisieren Sie die Webseite, wählen Sie das Zertifikat aus und beobachten Sie die Magie.

Forschung

Unter Windows 8 und IIS 8.5 folgte ich den Anweisungen hier http://itq.nl/testing-with-client-certificate-authentication-in-a-development-environment-on-iis-8-5/ .

Zertifikate wurden an der richtigen Stelle erstellt und alles ordnungsgemäß in IIS konfiguriert, aber es wurden immer 403.16-Fehler angezeigt.

Nachdem die vielen MSDN-Artikel und andere Versuche fehlgeschlagen waren, fand ich die folgende Registrierungseinstellung.

Legen Sie HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL .__ fest. Wertname: ClientAuthTrustMode Werttyp: REG_DWORD Wertdaten: 2

Legen Sie HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL .__ fest. Wertname: SendTrustedIssuerList Werttyp: REG_DWORD Wertdaten: 0 (Falsch, oder diesen Schlüssel vollständig löschen)

Weitere Informationen zu dieser speziellen Einstellung finden Sie hier: http://technet.Microsoft.com/en-us/library/hh831771.aspx )

Standardeinstellungen für Vertrauensmodi Es gibt drei Vertrauensmodi für die Clientauthentifizierung, die vom Schannel-Anbieter unterstützt werden. Der Vertrauensmodus steuert die Validierung der Zertifikatskette des Clients und ist eine systemweite Einstellung, die von REG_DWORD "ClientAuthTrustMode" unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel gesteuert wird.

0 Machine Trust (Standard) Erfordert, dass das Clientzertifikat von einem Zertifikat in der Liste der vertrauenswürdigen Emittenten ausgestellt wird.

1 Exclusive Root Trust Erfordert, dass ein Clientzertifikat mit einem Stammzertifikat verkettet wird, das im aufrufer angegebenen vertrauenswürdigen Ausstellerspeicher enthalten ist. Das Zertifikat muss auch von einem Aussteller in der Liste der vertrauenswürdigen Aussteller ausgestellt werden

2 Exclusive CA Trust Erfordert die Verkettung eines Clientzertifikats mit einem Zwischenzertifizierungszertifikat oder einem Stammzertifikat im von dem Aufrufer angegebenen vertrauenswürdigen Ausstellerspeicher Informationen zu Authentifizierungsfehlern aufgrund von Konfigurationsproblemen vertrauenswürdiger Aussteller finden Sie im Knowledge Base-Artikel 280256.

Hoffe auch diese Arbeit für dich.

46
Brett

Ich habe die oben vorgeschlagene Lösung ausprobiert und es funktioniert gut. 

Eine alternative Lösung, bei der die Registrierung nicht bearbeitet werden muss: 

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

Der wichtigste Punkt in diesem Artikel besteht darin, alle nicht signierten Zertifikate aus dem Ordner "Vertrauenswürdiger Stammordner des lokalen Computers" zu entfernen.

Wenn Sie Gruppenrichtlinien zum Bereitstellen von Zertifikaten verwenden, stellen Sie sicher, dass der Speicher für vertrauenswürdige Stammzertifizierungsstellen nur selbstsignierte Zertifikate enthält (Zertifikate, in denen die Zertifikateigenschaft "Subject" der Zertifikateigenschaft "Aussteller" entspricht). Verschieben Sie alle Zertifikate, die keine selbstsignierten Zertifikate sind, aus dem Speicher der vertrauenswürdigen Stammzertifizierungsstellen in den Speicher der Zwischenzertifizierungsstellen.

Wenn Sie neue Zertifikate manuell importieren, stellen Sie sicher, dass Sie .__ auswählen. Speicher der vertrauenswürdigen Stammzertifizierungsstellen des Computers für die selbstsignierte Zertifikate und die Zwischenstufe des Computers Zertifizierungsstellen speichern für die Zertifikate, die nicht .__ sind. selbstsignierte Zertifikate.

Sie können alle nicht selbstsignierten Zertifikate mithilfe des Powershell-Skripts finden: 

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

Verschieben Sie diese Zertifikate in den Ordner "Intermediate Certification Authorities" in "mmc".

3
zakmyster

Ich musste den Server neu starten, um die ClientAuthTrustMode-Einstellung anwenden zu können.

1
dezdez