Beschreibung des Proxyerkennungsmechanismus der Kryptografie-API 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.

In diesem Artikel wird erläutert, wie die Kryptografie-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 Netzwerkabruf von CRLs helfen.

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 für sichere Kanäle sendet der Server eine Server Hello-Nachricht an den Client mit seinem Serverzertifikat zurück, um seine Identität an den Client nachzuweisen. Dabei können die Serverzertifikatinformationen auch eine Liste der CRL-Verteilungspunkte (Certificate Revocation List) enthalten. Diese Liste der CRL-Verteilungspunkte enthält eine URL, von der aus der Client die Zertifikatsperrliste herunterladen und überprüfen kann, ob das Serverzertifikat vom Herausgeber des Zertifikats widerrufen wurde.

Die Kryptografie-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 Zertifikatsperrliste zu verwenden.

Die Kryptografie-API versucht intern, zuerst mithilfe der folgenden Logik einen Proxyserver zu finden, und wenn sie eine Proxyserveradresse findet, fordert sie WinHTTP auf, diesen spezifischen Proxy instance zu verwenden.

Wenn der Proxy instance nicht erreichbar oder falsch ist, kann WinHTTP die Zertifikatsperrliste nicht herunterladen, die Zertifikatsperrprüfung schlägt fehl, und Ihre Anwendung erhält einen Fehler von der Crypto-API, der den Sperrfehler angibt. Es kann den gleichen Fehler an den Benutzer melden, und abhängig von der Implementierung kann die Einrichtung des sicheren Kanals fehlschlagen.

Wenn Sie versuchen, den Proxy zu ermitteln, verwendet die Kryptografie-API die folgende Logik:

  1. Es wird überprüft, ob statische Proxyeinstellungen auf dem Computer konfiguriert sind, von dem aus die Zertifikatsperrlistenprüfung durchgeführt wird. In der Regel erfolgt diese Konfiguration mithilfe des Netsh-Hilfsprogramms, um den Proxy unter Windows Vista, Windows 2008, Windows 7 oder Windows 2008 R2 manuell festzulegen. Wenn ein statischer Proxy gefunden wird, verwendet die Kryptografie-API den statisch ermittelten Proxy, um die Zertifikatsperrliste ü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 unter Windows Vista, Windows 2008, Windows 7 und Windows 2008 R2 durchgeführt. Unter Windows 2003 überprüft die Kryptografie-API keine statischen Proxyeinstellungen.

  2. Wenn kein statisch konfigurierter Proxy gefunden wird, versucht die Kryptografie-API, die Internet-Explorer Proxyeinstellungen für den Benutzerkontext abzurufen, unter dem die Kryptografie-API ausgeführt wird.

    Je nachdem, wie Ihr Prozess ausgeführt wird, kann dies entweder die Identität des aktuell angemeldeten Benutzers oder ein bestimmter Benutzer sein, oder es kann sich um eines der vom System bereitgestellten Konten handeln : 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
    • 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
    • Beliebiger anderer 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 fehlen, werden keine Informationen zurückgegeben. Wenn die Proxyeinstellungen zurückgegeben werden, kann sie eine Kombination der folgenden Optionen enthalten:

    • Einstellungen automatisch erkennen.
    • 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 können Sie feststellen, dass das Navigieren zum CRL-Speicherort mithilfe des Internets Explorer, da der aktuelle Benutzer die Zertifikatsperrliste erfolgreich herunterlädt, aber derselbe Prozess schlägt fehl, wenn er von der Kryptografie-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 NETZWERKDIENST, LOKALES SYSTEM oder LOKALER DIENST vorhanden sein, da es nie erforderlich ist, internet Explorer mit diesen Identitäten zu öffnen. In solchen Fällen müssen Sie sicherstellen, dass für diese nicht interaktiven Benutzer keine Proxyeinstellungen für internetbasierte Explorer konfiguriert sind, oder sicherstellen, dass sie mit den Proxyeinstellungen für den Benutzer konsistent sind, mit dem der CRL-Download mithilfe von Internet Explorer erfolgreich ist.

  3. Wenn die Internet-Explorer Proxyeinstellungen für den ausführenden Benutzer nicht vorhanden sind oder wenn das Internet Explorer Einstellungen für die Prozessidentität angeben. Die Kryptografie-API versucht automatisch, Einstellungen zu erkennen oder ein Automatisches Konfigurationsskript zu verwenden, um automatisch einen Proxy für die betreffende Zertifikatsperrliste zu ermitteln. Dadurch werden entweder bestimmte Proxyinformationen oder "kein Proxy" zurückgegeben, wenn bei der automatischen Proxyermittlung ein Fehler auftritt oder die URL keinen Proxy erfordert.

    Die Kryptografie-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).

    Wenn der Proxy nicht erreichbar ist oder die Proxyinformationen falsch sind, schlägt der Abruf der CRL-URL fehl. Die Kryptografie-API meldet diesen Fehler dann an die aufrufende API, und je nach Implementierung kann der Aufrufer der Crypto-API dann entscheiden, ob die Anforderung abgebrochen oder durchgelassen werden soll.

    Hinweis

    In Fällen, in denen die Anwendung selbst die WinHTTP-API nutzt und die Proxyinformationen entweder im WinHttpOpen-Aufruf oder winHttpSetOption-Aufruf festgelegt hat, hat die Kryptografie-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 Kryptografie-API und von Ihrer eigenen Anwendung ist unabhängig und gibt keine Informationen untereinander frei.

In Windows 10 wird CryptoAPI 2 (CAPI2) aktualisiert, sodass keine eigenen Proxyeinstellungen vorhanden sind. Die Änderung wird in einem WinHttpOpen-Funktionsaufruf implementiert, wobei CAPI2 ab Windows 10 das flag WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY 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, ein Failover zwischen mehreren Proxys, verschiedenen Proxykonfigurationen pro Schnittstelle und Authentifizierung zu verarbeiten. Unterstützt in Windows 8.1 und höher.

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 verarbeitet, und der Aufrufer sollte keinen Code für die Proxykonfiguration schreiben. Wenn das WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY-Flag festgelegt ist, überprüft WinHttp die Standardproxykonfiguration mithilfe des Hilfsprogramms netsh und dann der Internet-Explorer Proxyeinstellungen.

Hinweis

Internet Explorer Proxyeinstellungen gelten pro Benutzer, was bedeutet, dass der Aufrufer die Identität des angemeldeten Benutzers annehmen 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: 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: