Dieser Artikel zielt darauf ab, den Prozess zu erläutern, den die Crypto API durchläuft, um erfolgreich eine HTTP-basierte URL für den CRL-Verteilungspunkt herunterzuladen. Er dient auch der Fehlerbehebung in Situationen, die mit der Netzwerkrückgewinnung von CRLs verbunden sind. Zusätzlich wird unser kostenloses Tool, crlcheck.exe, erwähnt, das dazu beitragen soll, komplexe Probleme effektiver zu lösen.
In einem Szenario, in dem Ihre Anwendung HTTP-Anfragen über SSL/TLS sendet, sendet der Server während der Verhandlung des sicheren Kanals eine Server-Hello-Nachricht mit seinem Serverzertifikat, um seine Identität zu bestätigen. Das Serverzertifikat kann auch Informationen über eine Liste von Verteilungspunkten für Zertifikatswiderrufslisten (CRL) enthalten. Diese Liste enthält eine URL, über die der Client die CRL herunterladen und überprüfen kann, ob das Serverzertifikat widerrufen wurde.
Intern verwendet die Crypto-API die WinHTTP-API, um die URL für den CRL-Verteilungspunkt herunterzuladen. Bevor dies geschieht, muss WinHTTP eine Route zur CRL-URL kennen. Wenn ein Proxyserver vorhanden ist, kann WinHTTP entweder automatisch einen erkennen oder von der Anwendung aufgefordert werden, einen bestimmten Proxy zu verwenden.
Die Crypto-API versucht zunächst, einen Proxyserver zu finden. Wenn dieser nicht erreichbar oder falsch konfiguriert ist, schlägt der Widerruf fehl, und Ihre Anwendung erhält einen entsprechenden Fehler. Dieser Fehler kann dem Benutzer gemeldet werden, und die sichere Kanaleinrichtung kann beeinträchtigt sein.
Beim Versuch, den Proxy zu entdecken, verwendet die Crypto-API die folgende Logik:
- Sie überprüft, ob auf dem Computer, von dem aus die CRL-Prüfung durchgeführt wird, statische Proxyeinstellungen konfiguriert sind. Diese Konfiguration erfolgt in der Regel unter Verwendung des netsh-Dienstprogramms, um den Proxy manuell auf Windows Vista, Windows 2008, Windows 7 oder Windows 2008 R2 festzulegen. Wenn ein statischer Proxy gefunden wird, verwendet die Crypto-API den statisch gefundenen Proxy zum Herunterladen der CRL über WinHttp. Weitere Informationen zu netsh finden Sie im Abschnitt Weitere Informationen unten.
- Wenn kein statisch konfigurierter Proxy gefunden wird, versucht die Crypto-API, die Proxyeinstellungen von Internet Explorer für den Benutzerkontext abzurufen, unter dem die Crypto-API ausgeführt wird.
- Je nachdem, als was Ihr Prozess ausgeführt wird, kann dies entweder die Identität des derzeit angemeldeten Benutzers sein oder es kann sich um einen bestimmten Benutzer handeln, oder es kann sich um eines der vom System bereitgestellten Konten handeln – LOCALE SYSTEM, NETWORK SERVICE, LOCAL SERVICE. Die folgenden Registrierungsorte werden basierend auf der ausführenden Identität abgefragt:
Aktuell angemeldeter Benutzer: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings |
NETWORK SERVICE: HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings |
LOCALE SYSTEM: HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings |
LOCALE SERVICE: HKEY_USERS\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Internet Settings |
Jeder andere Benutzer: HKEY_USERS\<<SID dieses Benutzers>>\Software\Microsoft\Windows\CurrentVersion\Internet Settings |
Diese Infos sind mit unserem freewqare tool crlcheck.exe sichtbar.
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, können sie eine Kombination der folgenden Optionen enthalten:
- Einstellungen automatisch erkennen.
- Automatische Konfigurationsskript verwenden.
- Proxyserver
Wichtig zu verstehen |
In Situationen, in denen der Prozess unter einer anderen Identität läuft als der aktuell angemeldete Benutzer, kann es je nach Konfiguration der Proxyeinstellungen für diesen Benutzer zu Inkonsistenzen kommen. In solchen Fällen kann es vorkommen, dass das Durchsuchen des CRL-Speicherorts unter Verwendung von Internet Explorer als aktuellem Benutzer erfolgreich die CRL herunterlädt, aber derselbe Prozess scheitert, 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 Ideale Konfiguration sieht vor, dass die Interneteinstellungen für nicht-interaktive Benutzer wie NETWORK SERVICE, LOCAL SYSTEM oder LOCAL SERVICE nicht vorhanden sind. Da diese Identitäten niemals Internet Explorer öffnen müssen, ist es wichtig sicherzustellen, dass sie keine Proxyeinstellungen für Internet Explorer haben. Alternativ müssen die Einstellungen mit den Proxyeinstellungen übereinstimmen, die für den Benutzer gelten, mit dem der CRL-Download über Internet Explorer erfolgreich ist.
Sollten die Proxyeinstellungen für den ausführenden Benutzer in Internet Explorer fehlen oder anzeigen, dass die Einstellungen automatisch erkannt oder ein automatisches Konfigurationsskript verwendet werden sollen, wird die Crypto-API automatisch versuchen, einen Proxy für die betreffende CRL zu ermitteln. Dabei können spezifische Proxyinformationen zurückgegeben werden oder es wird angezeigt, dass kein Proxy erforderlich ist, falls die automatische Proxyerkennung fehlschlägt oder die URL keinen Proxy erfordert.
Die Crypto-API wird dann versuchen, die WinHTTP-API zum Herunterladen der CRL-URL unter Verwendung des ermittelten Proxys (oder ohne Proxy, wenn keiner ermittelt werden konnte oder kein Proxy erforderlich ist) zu verwenden.
Sollte der Proxy nicht erreichbar sein oder die Proxyinformationen fehlerhaft sein, schlägt der Abruf der CRL-URL fehl. In diesem Fall wird die Crypto-API diesen Fehler an die aufrufende API melden. Je nach Implementierung kann der Aufrufer der Crypto-API dann entscheiden, ob die Anfrage abgebrochen oder fortgesetzt werden soll.
Wichtig zu verstehen |
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 Crypto-API keinen Zugriff auf die Proxyinformationen, die die Anwendung festgelegt hat, und wird dennoch versuchen, die Proxyinformationen wie oben beschrieben zu ermitteln. Die Verwendung der WinHttp-API von der Crypto-API und von Ihrer eigenen Anwendung sind unabhängig und teilen keine Informationen miteinander. |
Speziell: Unter Windows 10 wurde die CryptoAPI 2 (CAPI2) aktualisiert, sodass sie keine eigenen Proxyeinstellungen mehr enthält. Diese Änderung wird in einem Funktionsaufruf von WinHttpOpen umgesetzt, wobei ab Windows 10 das Flag WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY verwendet wird.
Flag-Name |
Beschreibung |
WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY |
Verwendet System- und benutzerspezifische Proxyeinstellungen (einschließlich der Internet Explorer-Proxykonfiguration), um zu bestimmen, welchen/die Proxy/proxies verwendet werden sollen. Versucht automatisch, Failover zwischen mehreren Proxys, unterschiedliche Proxykonfigurationen |
Anmerkung: Vorherige Windows-Versionen haben das Flag WINHTTP_ACCESS_TYPE_DEFAULT_PROXY verwendet.
Das Flag WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY bedeutet, dass WinHttp die Proxyerkennungslogik behandeln wird und der Aufrufer keinen Code schreiben sollte, um die Proxykonfiguration zu behandeln. Wenn das Flag WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY gesetzt ist, überprüft WinHttp die Standardproxykonfiguration unter Verwendung des netsh-Dienstprogramms und dann der Internet Explorer-Proxyeinstellungen.
Anmerkung: Die Proxyeinstellungen von Internet Explorer sind benutzerspezifisch, was bedeutet, dass der Aufrufer den angemeldeten Benutzer nachahmen sollte.
Das Verzeichnis HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\InternetSettings\ProxySettingsPerUser gibt an, ob die Proxyeinstellungen auf Benutzerebene oder auf Maschinenebene konfiguriert sind. Wenn der Wert auf 0 gesetzt ist, bedeutet dies, dass die Proxyeinstellungen für die gesamte Maschine gelten, während ein Wert von 1 oder das Fehlen des Werts bedeutet, dass die Proxyeinstellungen benutzerspezifisch sind. Diese Einstellung ermöglicht es Administratoren, Proxyeinstellungen entweder systemweit zu konfigurieren oder den Benutzern die Möglichkeit zu geben, ihre eigenen Proxyeinstellungen festzulegen.
Wenn Sie keinen Proxy für jeden angemeldeten Benutzer festlegen möchten, können Sie einen systemweiten Proxy einrichten, indem Sie den Schlüssel ProxySettingsPerUser auf 0 setzen.
Registrierungsschlüssel
HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\InternetSettings\ProxySettingsPerUser
Typ REG DWORD
Wert
0: pro-Maschine Proxy
1 oder kein Wert: pro-Benutzer
crlcheck.exe Proxy infos
cmd.exe
Inetcpl.cpl
Nachdem Sie den Registrierungsschlüssel festgelegt haben, können Sie den Proxy mit den Internetoptionen (Inetcpl.cpl) konfigurieren. Systemweite Proxyeinstellungen können von Administratoren geändert werden oder über die Gruppenrichtlinie.
CRLcheck.exe is a tool developed to verify digital signatures of executable files. It collects files from known paths on your client, checks their signature, and retrieves Certificate Revocation Lists (CRL) and OCSP. This helps avoid delays in launching files, especially when browser traffic is redirected through a web security proxy.
EN
CRLcheck.exe ist ein Tool, das entwickelt wurde, um digitale Signaturen von ausführbaren Dateien zu überprüfen. Es sammelt Dateien von bekannten Pfaden auf Ihrem Client, überprüft ihre Signatur und ruft Zertifikatssperrlisten (CRL) und OCSP ab. Dies hilft, Verzögerungen beim Starten von Dateien zu vermeiden, insbesondere wenn der Browserverkehr über einen Web-Sicherheitsproxy umgeleitet wird.
DE
Automatisches suchen aller Code Signierten Files auf ihrem system und deren CRL oder OCSP.
Prüfen ob Ihr client die CRL + OCSP URL downloaden kann
Suchen von DENIED oder INVALIDEN CRL + OCSP URL: