Beschreibung des Proxyerkennungsmechanismus der Kryptografie-API beim Herunterladen einer Zertifikatsperrliste (Certificate Revocation List, CRL) von einem CRL-Verteilungspunkt
Wichtig
Die Internet Explorer 11-Desktopanwendung wird für bestimmte Versionen von Windows 10 eingestellt und ab dem 15. Juni 2022 nicht mehr unterstützt.
Sie können mit dem Internet Explorer-Modus in Microsoft Edge weiterhin auf ältere Websites zugreifen, für die Internet Explorer erforderlich ist. Anleitung.
Die Internet Explorer 11-Desktopanwendung wird schrittweise an den schnelleren, sichereren Microsoft Edge-Browser umgeleitet und letztendlich über Windows Update deaktiviert werden. Deaktivieren von IE heute.
In diesem Artikel wird erläutert, wie die Krypto-API versucht, eine Route zu finden, über die sie eine HTTP-basierte CRL-Verteilungspunkt-URL erfolgreich herunterladen kann und bei der Problembehandlung in Szenarien im Zusammenhang mit dem Abrufen von CRLs im Netzwerk helfen soll.
Ursprüngliche Produktversion: 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
Zusammenfassung
Stellen Sie sich folgendes Szenario vor: Ihre Anwendung verwendet die WinINet-API, die WinHTTP-API oder die System.Net.HttpWebRequest-Klasse des .NET-Frameworks, um eine HTTP-Anforderung über SSL/TLS zu senden. Während der SSL/TLS-Aushandlung des sicheren Kanals sendet der Server eine Server Hello-Nachricht mit seinem Serverzertifikat an den Client zurück, um seine Identität dem Client nachzuweisen. Dabei können die Serverzertifikatsinformationen auch eine Liste der Zertifikatsperrliste (Certificate Revocation List, CRL) enthalten. Diese Liste der CRL-Verteilungspunkte enthält eine URL, von der der Client die CRL herunterladen und überprüfen kann, ob das Serverzertifikat vom Herausgeber des Zertifikats widerrufen wurde.
Die Krypto-API verwendet intern die WinHTTP-API, um die HTTP-basierte URL für den CRL-Verteilungspunkt herunterzuladen. Vor dem Herunterladen der URL 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, die die WinHTTP-API verwendet, aufgefordert werden, einen bestimmten Proxy zum Herunterladen der CRL zu verwenden.
Die Krypto-API versucht intern, zuerst mithilfe der folgenden Logik einen Proxyserver zu finden, und wenn sie eine Proxyserveradresse findet, wird WinHTTP aufgefordert, diese bestimmte Proxyinstanz zu verwenden.
Wenn die Proxyinstanz nicht erreichbar oder falsch ist, kann WinHTTP die CRL nicht herunterladen, die Zertifikatsperrungsprüfung schlägt fehl, und Ihre Anwendung erhält einen Fehler von der Krypto-API, der den Sperrfehler angibt. Sie kann denselben Fehler an den Benutzer melden, und je nach Implementierung kann die Einrichtung des sicheren Kanals fehlschlagen.
Beim Versuch, den Proxy zu ermitteln, verwendet die Krypto-API die folgende Logik:
Es überprüft, ob auf dem Computer, auf dem die CRL-Prüfung durchgeführt wird, statische Proxyeinstellungen konfiguriert sind. In der Regel erfolgt diese Konfiguration mithilfe des Hilfsprogramms netsh, um den Proxy manuell auf Windows Vista, Windows 2008, Windows 7 oder Windows 2008 R2 festzulegen. Wenn ein statischer Proxy gefunden wird, verwendet die Krypto-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.
Hinweis
Diese Überprüfung wird nur für Windows Vista, Windows 2008, Windows 7 und Windows 2008 R2 ausgeführt. Am Windows 2003 überprüft die Krypto-API keine statischen Proxyeinstellungen.
Wenn kein statisch konfigurierter Proxy gefunden wird, versucht die Krypto-API, die Internet Explorer-Proxyeinstellungen für den Benutzerkontext abzurufen, unter dem die Krypto-API ausgeführt wird.
Je nachdem, wie Der Prozess ausgeführt wird, kann dies entweder die Identität des aktuell angemeldeten Benutzers oder von einem bestimmten Benutzer sein, oder es kann sich um eines der systemeigenen Konten handeln : LOKALES SYSTEM, NETZWERKDIENST, LOKALER DIENST. Die folgenden Registrierungsspeicherorte werden basierend auf der ausgeführten Identität abgefragt:
- Aktuell angemeldeter Benutzer:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings - NETZWERKDIENST:
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 - Alle anderen Benutzer:
HKEY_USERS\<<SID of that user>>\Software\Microsoft\Windows\CurrentVersion\Internet Settings
Abhängig von den 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:
- Automatisches Erkennen von Einstellungen.
- Verwenden Sie das Skript für die automatische Konfiguration.
- Proxyserver.
Hinweis
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 beobachten Sie möglicherweise, dass beim Navigieren zum CRL-Speicherort Internet Explorer verwendet wird, da der aktuelle Benutzer die CRL erfolgreich herunterlädt, aber derselbe Prozess schlägt fehl, wenn er von der Krypto-API verwendet wird, die als anderer Benutzer ausgeführt wird. In solchen Situationen wird dringend empfohlen, dass Sie das Internet Einstellungen aller Benutzer überprüfen und sicherstellen, dass sie konsistent sind.
Das Internet Einstellungen sollte im Idealfall nicht für nicht interaktive Benutzer wie NETWORK SERVICE, LOCAL SYSTEM oder LOCAL SERVICE vorhanden sein, da Internet Explorer nie mit diesen Identitäten geöffnet werden muss. In solchen Fällen müssen Sie sicherstellen, dass für diese nicht interaktiven Benutzer keine Proxyeinstellungen für Internet Explorer konfiguriert sind, oder sie müssen sicherstellen, dass sie mit den Proxyeinstellungen für den Benutzer übereinstimmen, mit dem der CRL-Download mit Internet Explorer erfolgreich ausgeführt werden kann.
- Aktuell angemeldeter Benutzer:
Wenn die Internet Explorer-Proxyeinstellungen für den ausgeführten Benutzer nicht vorhanden sind oder wenn die Internet Explorer-Einstellungen für die Prozessidentität angeben. Automatisches Erkennen von Einstellungen oder Verwenden des Skripts für die automatische Konfiguration. Die Krypto-API versucht, 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 für die URL kein Proxy erforderlich ist.
Die Krypto-API versucht, die WinHTTP-API zum Herunterladen der CRL-URL mithilfe des ermittelten Proxys (oder keinen Proxy, wenn der Proxy nicht ermittelt werden konnte oder wenn die URL keinen Proxy erfordert) herunterzuladen.
Wenn der Proxy nicht erreichbar ist oder wenn die Proxyinformationen falsch sind, schlägt das Abrufen der CRL-URL fehl. Die Krypto-API meldet diesen Fehler dann an die aufrufende API, und je nach Implementierung kann der Aufrufer der Krypto-API dann entscheiden, ob die Anforderung abgebrochen oder durchgelassen werden soll.
Hinweis
In Fällen, in denen die Anwendung selbst die WinHTTP-API verwendet und die Proxyinformationen entweder im WinHttpOpen-Aufruf oder im WinHttpSetOption-Aufruf festgelegt hat, hat die Krypto-API keinen Zugriff auf die Proxyinformationen, die die Anwendung festgelegt hat, und versucht weiterhin, die Proxyinformationen wie oben beschrieben zu ermitteln. Die Verwendung der WinHttp-API aus der Krypto-API und aus Ihrer eigenen Anwendung ist unabhängig und gibt keine Informationen miteinander frei.
In Windows 10 wird CryptoAPI 2 (CAPI2) aktualisiert, sodass es keine eigenen Proxyeinstellungen hat. Die Änderung wird in einem WinHttpOpen-Funktionsaufruf implementiert, wobei CAPI2 ab Windows 10 das WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY Flag verwendet.
| Flagname | Beschreibung |
|---|---|
| WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY | Verwendet System- und benutzerspezifische Proxyeinstellungen (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 verarbeiten. Unterstützt in Windows 8.1 und neuer. |
Hinweis
In früheren Windows Versionen wurde das Flag WINHTTP_ACCESS_TYPE_DEFAULT_PROXY verwendet.
Das WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY Flag bedeutet, dass WinHttp die Proxyerkennungslogik behandelt, und der Aufrufer sollte keinen Code schreiben, um die Proxykonfiguration zu behandeln. Wenn das flag WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY festgelegt ist, überprüft WinHttp die Standardproxykonfiguration mithilfe des Dienstprogramms netsh und dann der Internet Explorer-Proxyeinstellungen.
Hinweis
Internet Explorer-Proxyeinstellungen sind pro Benutzer, was bedeutet, dass der Aufrufer die Identität des angemeldeten Benutzers annehmen sollte.
Wenn Sie nicht für jeden angemeldeten Benutzer einen Proxy 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 |
| Value | 0: Proxy pro Computer 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: