Beschreibung des Kryptografie-API-Proxyerkennungsmechanismus beim Herunterladen einer Zertifikatsperrliste (Certificate Revocation List, CRL) von einem CRL-Verteilungspunkt
Warnung
Die eingestellte, nicht mehr unterstützte Desktop-Anwendung Internet Explorer 11 wurde durch ein Microsoft Edge-Update in bestimmten Versionen von Windows 10 dauerhaft deaktiviert. Weitere Informationen finden Sie unter Häufig gestellte Fragen zur Einstellung der Desktop-App von Internet Explorer 11.
Der Zweck dieses Artikels besteht darin, zu erläutern, wie die Crypto-API versucht, eine Route zu finden, über die sie erfolgreich eine HTTP-basierte CRL-Verteilungspunkt-URL herunterladen kann, und soll bei der Problembehandlung in Szenarien im Zusammenhang mit dem Abrufen von CrLs im Zusammenhang mit dem Netzwerkabruf von CRLs helfen.
Originalproduktversion: Windows Server 2003 Service Pack 2, Windows Vista Enterprise, Windows Server 2008 Enterprise, Windows 7 Enterprise, Windows Server 2008 R2 Enterprise, Windows 10, Windows Server 2016, Windows Server 2019
Ursprüngliche KB-Nummer: 2623724
Übersicht
Stellen Sie sich folgendes Szenario vor: Ihre Anwendung verwendet die WinINet-API, WinHTTP-API oder die System.Net.HttpWebRequest-Klasse des .NET Frameworks, um eine HTTP-Anforderung über SSL/TLS zu senden. Während der Aushandlung des sicheren SSL/TLS-Kanals sendet der Server eine Server Hello-Nachricht mit seinem Serverzertifikat an den Client, um seine Identität für den Client zu beweisen. Dabei können die Serverzertifikatinformationen auch eine Liste der Zertifikatsperrlisten (Certificate Revocation List, CRL)-Verteilungspunkte enthalten. Diese Liste der CRL-Verteilerpunkte enthält eine URL, von der der Client die CRL herunterladen kann, und kann überprüfen, ob das Serverzertifikat vom Herausgeber des Zertifikats widerrufen wurde.
Die Crypto-API verwendet intern die WinHTTP-API, um die HTTP-basierte URL für den CRL-Verteilungspunkt herunterzuladen. Bevor Sie die URL herunterladen, muss WinHTTP eine Route kennen, um die CRL-URL zu erreichen. In Situationen, in denen die Umgebung über einen Proxyserver verfügt, kann WinHTTP entweder den Proxyserver automatisch erkennen oder von der Anwendung gefragt werden, die die WinHTTP-API verwendet, um einen bestimmten Proxy zum Herunterladen der CRL zu verwenden.
Die Crypto-API versucht intern, einen Proxyserver zuerst mithilfe der folgenden Logik zu finden, und wenn er eine Proxyserveradresse findet, fordert sie WinHTTP auf, diese bestimmte Proxyinstanz zu verwenden.
Wenn die Proxyinstanz nicht erreichbar ist oder falsch ist, kann WinHTTP die CRL nicht herunterladen, die Zertifikatsperrüberprüfung schlägt fehl, und Ihre Anwendung erhält eine Fehlermeldung von der Crypto-API, die den Sperrfehler angibt. Er kann dem Benutzer den gleichen Fehler melden, und abhängig von der Implementierung kann die Einrichtung des sicheren Kanals fehlschlagen.
Beim Versuch, den Proxy zu ermitteln, verwendet die Crypto-API die folgende Logik:
Es überprüft, ob statische Proxyeinstellungen auf dem Computer konfiguriert sind, von wo aus die CRL-Überprüfung durchgeführt wird. In der Regel erfolgt diese Konfiguration mithilfe des Netsh-Hilfsprogramms, um den Proxy manuell unter Windows Vista, Windows 2008, Windows 7 oder Windows 2008 R2 festzulegen. Wenn ein statischer Proxy gefunden wird, verwendet die Crypto-API den statisch ermittelten Proxy, um die CRL über WinHttp herunterzuladen. Weitere Informationen zu Netsh finden Sie unter Netsh Commands for Windows Hypertext Transfer Protocol (WINHTTP) im Abschnitt "Weitere Informationen " weiter unten.
Notiz
Diese Überprüfung wird nur unter Windows Vista, Windows 2008, Windows 7 und Windows 2008 R2 durchgeführt. Unter Windows 2003 überprüft die Crypto-API keine statischen Proxyeinstellungen.
Wenn ein statisch konfigurierter Proxy nicht gefunden wird, versucht die Crypto-API, die Internet Explorer-Proxyeinstellungen für den Benutzerkontext abzurufen, unter dem die Crypto-API ausgeführt wird.
Je nachdem, wie Ihr Prozess ausgeführt wird, kann dies entweder die Identität des aktuell angemeldeten Benutzers sein, oder es kann von einem bestimmten Benutzer oder jeder der systeme bereitgestellten Konten sein : LOCAL SYSTEM, NETWORK SERVICE, LOCAL SERVICE. Die folgenden Registrierungsspeicherorte werden basierend auf der ausgeführten Identität abgefragt:
- Aktuell angemeldeter Benutzer:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- NETZWERK-DIENST:
HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- LOKALES SYSTEM:
HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- LOKALER DIENST:
HKEY_USERS\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- Jeder andere Benutzer:
HKEY_USERS\<<SID of that user>>\Software\Microsoft\Windows\CurrentVersion\Internet Settings
Je nach Registrierungsinformationen werden die Proxyeinstellungen für diesen Benutzer zurückgegeben. Wenn die Proxyeinstellungen nicht vorhanden sind, werden keine Informationen zurückgegeben. Wenn die Proxyeinstellungen zurückgegeben werden, kann sie eine Kombination der folgenden Optionen enthalten:
- Automatische Erkennung von Einstellungen.
- Verwenden Sie das Skript für die automatische Konfiguration.
- Proxyserver.
Notiz
In Situationen, in denen der Prozess als eine andere Identität als der aktuell angemeldete Benutzer ausgeführt wird, kann es eine Inkonsistenz in den Proxyeinstellungen geben, je nachdem, wie die Proxyeinstellungen für diesen Benutzer konfiguriert wurden. In solchen Fällen können Sie feststellen, dass Das Browsen zum CRL-Speicherort mithilfe von Internet Explorer, da der aktuelle Benutzer die CRL erfolgreich herunterlädt, aber derselbe Prozess schlägt fehl, wenn er von der Crypto-API verwendet wird, die als anderer Benutzer ausgeführt wird. In solchen Situationen wird dringend empfohlen, die Interneteinstellungen aller Benutzer zu überprüfen und sicherzustellen, dass sie konsistent sind.
Die Interneteinstellungen sollten idealerweise nicht für nicht interaktive Benutzer wie NETWORK SERVICE, LOCAL SYSTEM oder LOCAL SERVICE vorhanden sein, da internet Explorer niemals mit diesen Identitäten geöffnet werden muss. In solchen Fällen müssen Sie sicherstellen, dass diese nicht interaktiven Benutzer keine Proxyeinstellungen für Internet Explorer konfiguriert haben, oder stellen Sie sicher, dass sie mit den Proxyeinstellungen für den Benutzer konsistent sind, mit dem der CRL-Download erfolgreich internet Explorer verwendet.
- Aktuell angemeldeter Benutzer:
Wenn die Internet Explorer-Proxyeinstellungen für den ausgeführten Benutzer nicht vorhanden sind oder die Internet Explorer-Einstellungen für die Prozessidentität angeben. Die Crypto-API versucht automatisch, Einstellungen zu erkennen oder automatische Konfigurationsskripts zu verwenden, um automatisch einen Proxy für die betreffende CRL zu ermitteln. Dadurch werden entweder bestimmte Proxyinformationen zurückgegeben oder "kein Proxy" zurückgegeben, wenn die automatische Proxyermittlung fehlschlägt oder wenn die URL keinen Proxy erfordert.
Die Crypto-API versucht, die WinHTTP-API zu verwenden, um die CRL-URL mithilfe des ermittelten Proxys herunterzuladen (oder keinen Proxy, wenn der Proxy nicht erkannt werden konnte oder wenn die URL keinen Proxy erfordert).
Wenn der Proxy nicht erreichbar ist oder die Proxyinformationen falsch sind, schlägt der Abruf der CRL-URL fehl. Die Crypto-API meldet dann diesen Fehler an die aufrufende API, und abhängig von der Implementierung kann der Aufrufer der Crypto-API dann entscheiden, ob die Anforderung abgebrochen oder durchgelassen werden soll.
Notiz
In Fällen, in denen die Anwendung selbst die WinHTTP-API verwendet und die Proxyinformationen entweder im WinHttpOpen-Aufruf oder WinHttpSetOption-Aufruf festgelegt hat, hat die Crypto-API keinen Zugriff auf die Proxyinformationen, die die Anwendung festgelegt hat, und versucht weiterhin, die Proxyinformationen wie oben zu ermitteln. Die Verwendung der WinHttp-API aus der Crypto-API und von Ihrer eigenen Anwendung sind unabhängig und teilen keine Informationen miteinander.
In Windows 10 wird CryptoAPI 2 (CAPI2) aktualisiert, sodass sie nicht über eigene Proxyeinstellungen verfügt. Die Änderung wird in einem WinHttpOpen-Funktionsaufruf implementiert, bei dem capI2 ab Windows 10 das WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY-Flag verwendet.
Flagname | Beschreibung |
---|---|
WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY | Verwendet System- und Benutzerproxyeinstellungen (einschließlich der Internet Explorer-Proxykonfiguration), um zu bestimmen, welche Proxys/Proxys verwendet werden sollen. Versucht automatisch, Failover zwischen mehreren Proxys, verschiedenen Proxykonfigurationen pro Schnittstelle und Authentifizierung zu behandeln. Unterstützt in Windows 8.1 und höher. |
Notiz
In früheren Windows-Versionen wurde das WINHTTP_ACCESS_TYPE_DEFAULT_PROXY-Flag verwendet.
Das WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY Flag bedeutet, dass WinHttp die Proxyerkennungslogik verarbeitet, und der Aufrufer sollte keinen Code schreiben, um die Proxykonfiguration zu verarbeiten. Wenn das WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY Flag festgelegt ist, überprüft WinHttp die Standardproxykonfiguration mithilfe des Netsh-Hilfsprogramms und dann die Internet Explorer-Proxyeinstellungen.
Notiz
Internet Explorer-Proxyeinstellungen sind pro Benutzer, was bedeutet, dass der Aufrufer die Identität des angemeldeten Benutzers imitieren sollte.
Wenn Sie keinen Proxy für jeden angemeldeten Benutzer festlegen möchten, können Sie einen computerweiten Proxy einrichten, indem Sie den ProxySettingsPerUser-Schlüssel auf 0 festlegen.
Registrierungsschlüssel | HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\InternetSettings\ProxySettingsPerUser |
---|---|
Typ | REG DWORD |
Wert | 0: Pro Computerproxy 1 oder kein Wert: pro Benutzer |
Nachdem Sie den Registrierungsschlüssel festgelegt haben, können Sie den Proxy mit Interneteigenschaften (Inetcpl.cpl) konfigurieren. Computerweite Proxyeinstellungen können von Administratoren oder mithilfe der Gruppenrichtlinie geändert werden.
Weitere Informationen
Weitere Informationen finden Sie unter: