Heim  >  Artikel  >  Java  >  Java verwendet OpenSSL, um zu erkennen, ob die Website OCSP unterstützt

Java verwendet OpenSSL, um zu erkennen, ob die Website OCSP unterstützt

WBOY
WBOYnach vorne
2022-09-15 15:26:042503Durchsuche

Dieser Artikel bringt Ihnen relevantes Wissen über Java. Es wurde vorgeschlagen, CRL zu ersetzen. Moderne Webserver unterstützen im Allgemeinen auch die Standardkonfiguration von OCSP. Ich hoffe, es wird für alle hilfreich sein.

Java verwendet OpenSSL, um zu erkennen, ob die Website OCSP unterstützt

Empfohlene Studie: „Java-Video-Tutorial

OCSP Online Certificate Status Protocol wurde als Ersatz für CRL vorgeschlagen. Moderne Webserver unterstützen im Allgemeinen OCSP, und OCSP ist auch für moderne Webserver Standard.

Aber nicht alle Webserver unterstützen OCSP-Heften. Aber in der Praxis müssen wir möglicherweise wissen, inwieweit eine bestimmte Website OCSP unterstützt.

Websites, die OCSP-Heftung unterstützen

Wie kann festgestellt werden, ob eine Website OCSP-Heftung unterstützt?

Am einfachsten ist es, die Website eines Drittanbieters aufzurufen, um die Zertifikatsinformationen der Website zu überprüfen. Beispielsweise haben wir zuvor entrust.ssllabs.com erwähnt. Durch Eingabe der entsprechenden Website-Informationen finden Sie im Abschnitt „Protokolldetails“ die spezifischen Informationen darüber, ob die Website OCSP-Stapling unterstützt, wie unten gezeigt:

Sie Wenn Sie diese Website besuchen, ist die OCSP-Heftung aktiviert. Tatsächlich ermöglichen die meisten Websites auf der Welt jedoch kein OCSP-Heften.

Gibt es außer der Überprüfung der OCSP-Heftung auf Websites Dritter noch eine andere Möglichkeit?

Tatsächlich können wir dies ganz einfach mit dem OpenSSL-Artefakt tun. Voraussetzung ist natürlich, dass diese Website https unterstützt.

Als nächstes erklären wir im Detail den gesamten Prozess vom Erhalt des Serverzertifikats bis zur Überprüfung, ob der Server OCSP-Stapling unterstützt.

Die in diesem Artikel zu überprüfende Website ist die offizielle Website von Microsoft www.squarespace.com, eine Website, die OCSP-Heften unterstützt.

Holen Sie sich das Zertifikat des Servers

Um zu überprüfen, ob der Server OSCP unterstützt, müssen wir zunächst das Zertifikat des Servers abrufen. Sie können openSL s_client -connect verwenden, das von openSL bereitgestellt wird, um diese Arbeit abzuschließen.

 openssl s_client -connect www.squarespace.com:443

Dieser Befehl gibt den gesamten Inhalt des Verbindungsaufbaus aus, einschließlich der Zertifikatsinformationen der Website, auf die zugegriffen werden soll.

Da wir nur das Zertifikat der Website benötigen, müssen wir -----BEGIN CERTIFICATE----- und -----END CERTIFICATE-----. <p><code>-----BEGIN CERTIFICATE----------END CERTIFICATE-----之间的内容保存即可。

那么最终的命令如下:

openssl s_client -connect www.squarespace.com:443 | sed -n &#39;/-----BEGIN/,/-----END/p&#39; > ca.pem

这里我们使用一个sed -n命令从输出中截取以-----BEGIN开头和以-----END结尾的数据。

最终我们得到了网站的证书。

除了网站本身的证书之外,网站的证书本身是由其他的证书来签发的,这些证书叫做intermediate certificate,我们需要获取到整个证书链。

同样使用openssl的openssl s_client -showcerts命令可以获取所有的证书链:

openssl s_client -showcerts  -connect www.squarespace.com:443 | sed -n &#39;/-----BEGIN/,/-----END/p&#39; > chain.pem

如果你打开chain.pem文件可以发现,文件里面有两个证书,最上面的一个就是服务器本身的证书,而第二个就是用于签名服务器证书的intermediate certificate。

获取OCSP responder地址

如果证书中包含有OCSP responder的地址,那么可以用下面的命令来获取:

openssl x509 -noout -ocsp_uri -in ca.pem

我们可以得到网站的ocsp responder地址是:http://ocsp.digicert.comDann lautet der letzte Befehl wie folgt:

openssl x509 -text -noout -in ca.pem

Hier verwenden wir einen sed -n-Befehl, um die Ausgabe abzufangen, die mit -----BEGIN beginnt und mit ---- endet. -END.

Endlich haben wir das Zertifikat der Website erhalten.

Zusätzlich zum Zertifikat der Website selbst wird das Zertifikat der Website selbst von anderen Zertifikaten signiert. Diese Zertifikate werden als Zwischenzertifikate bezeichnet. Wir benötigen die gesamte Zertifikatskette.

Verwenden Sie auch den Befehl openssl s_client -showcerts von openssl, um alle Zertifikatsketten abzurufen:

 Authority Information Access:
                OCSP - URI:http://ocsp.digicert.com
                CA Issuers - URI:http://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt

Wenn Sie die Datei „chain.pem“ öffnen, können Sie feststellen, dass die Datei zwei Zertifikate enthält, das oberste ist das Zertifikat des Servers selbst, und das zweite ist das Zwischenzertifikat, das zum Signieren des Serverzertifikats verwendet wird.

Holen Sie sich die OCSP-Responder-Adresse

Wenn das Zertifikat die Adresse des OCSP-Responders enthält, können Sie den folgenden Befehl verwenden, um sie abzurufen:

openssl ocsp -issuer chain.pem -cert ca.pem -text -url http://ocsp.digicert.com

Wir können die OCSP-Responder-Adresse der Website abrufen: http:/ /ocsp.digicert .com.

Es gibt eine andere Möglichkeit, die Adresse des OCSP-Responders zu erhalten:

OCSP Request Data:
    Version: 1 (0x0)
    Requestor List:
        Certificate ID:
          Hash Algorithm: sha1
          Issuer Name Hash: 521EE36C478119A9CB03FAB74E57E1197AF1818B
          Issuer Key Hash: 09262CA9DCFF639140E75867E2083F74F6EAF165
          Serial Number: 120014F1EC2395D56FDCC4DCB700000014F1EC
    Request Extensions:
        OCSP Nonce:
            04102873CFC7831AB971F3FDFBFCF3953EC5

Dieser Befehl gibt alle Informationen des Zertifikats aus. Wir können den folgenden Inhalt sehen:

OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: B76BA2EAA8AA848C79EAB4DA0F98B2C59576B9F4
    Produced At: Apr 30 04:36:26 2022 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: E4E395A229D3D4C1C31FF0980C0B4EC0098AABD8
      Issuer Key Hash: B76BA2EAA8AA848C79EAB4DA0F98B2C59576B9F4
      Serial Number: 0F21C13200AE502D52BBE8DFEAB0F807
    Cert Status: good
    This Update: Apr 30 04:21:01 2022 GMT
    Next Update: May  7 03:36:01 2022 GMT

wobei OCSP - URI die Adresse des OCSP-Responders ist .

OCSP-Anfrage senden

Mit der Adresse des OCSP-Responders können wir eine OCSP-Überprüfung durchführen. In diesem Befehl müssen wir das Zertifikat und das Zwischenzertifikat des Servers verwenden.

Der spezifische Anforderungsbefehl lautet wie folgt:

    This Update: Apr 30 04:21:01 2022 GMT
    Next Update: May  7 03:36:01 2022 GMT

Wir können zwei Teile aus der Ausgabe erhalten. Der erste Teil sind OCSP-Anforderungsdaten, bei denen es sich um die OCSP-Anforderungsdaten handelt:

Error querying OCSP responder
4346349100:error:27FFF072:OCSP routines:CRYPTO_internal:server response error:/AppleInternal/Library/BuildRoots/66382bca-8bca-11ec-aade-6613bcf0e2ee/Library/Caches/com.apple.xbs/Sources/libressl/libressl-2.8/crypto/ocsp/ocsp_ht.c:251:Code=400,Reason=Bad Request

Aus den Anforderungsdaten können wir die Details sehen OCSP-Anfragedatenstruktur, einschließlich Emittenteninhalt und OCSP-Nonce.

Der zweite Teil sind die Antwortdaten. Leider haben wir die folgenden Anfragefehler-Antwortdaten erhalten:

openssl s_client -tlsextdebug -status -connect www.squarespace.com:443
🎜Im oben zurückgegebenen Ergebnis bedeutet Cert Status: good, dass die OCSP-Anfrage erfolgreich war OCSP-Protokoll. 🎜🎜Die folgenden zwei Zeilen geben den Zeitpunkt des letzten Updates von OCSP und den Zeitpunkt des nächsten Updates an: 🎜
OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: B76BA2EAA8AA848C79EAB4DA0F98B2C59576B9F4
    Produced At: Apr 27 04:36:26 2022 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: E4E395A229D3D4C1C31FF0980C0B4EC0098AABD8
      Issuer Key Hash: B76BA2EAA8AA848C79EAB4DA0F98B2C59576B9F4
      Serial Number: 0F21C13200AE502D52BBE8DFEAB0F807
    Cert Status: good
    This Update: Apr 27 04:21:02 2022 GMT
    Next Update: May  4 03:36:02 2022 GMT
🎜Gibt an, dass diese Website auch OCSP-Heften unterstützt. 🎜🎜Darüber hinaus erhalten Sie möglicherweise die folgende Ausnahme, wenn Sie die OCSP-URL einiger Websites anfordern: 🎜rrreee🎜Warum ist das so? 🎜🎜Das liegt daran, dass die Website ocsp.msocsp.com die Standard-HTTP-1.0-Anfrage von OCSP nicht unterstützt. In der HTTP-1.0-Anfrage gibt es standardmäßig keinen Host-Anfrageheader. Wir müssen also den Host-Anforderungsheader hinzufügen und ihn dann erneut ausführen. 🎜🎜Eine einfachere Methode🎜🎜Oben haben wir die Anfrage tatsächlich aufgeteilt und Schritt für Schritt ausgeführt. Wir können OpenSSL auch verwenden, um Aufgaben in einem Schritt wie folgt auszuführen: 🎜
openssl s_client -tlsextdebug -status -connect www.squarespace.com:443

从输出中,我们可以看到下面的数据:

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: B76BA2EAA8AA848C79EAB4DA0F98B2C59576B9F4
    Produced At: Apr 27 04:36:26 2022 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: E4E395A229D3D4C1C31FF0980C0B4EC0098AABD8
      Issuer Key Hash: B76BA2EAA8AA848C79EAB4DA0F98B2C59576B9F4
      Serial Number: 0F21C13200AE502D52BBE8DFEAB0F807
    Cert Status: good
    This Update: Apr 27 04:21:02 2022 GMT
    Next Update: May  4 03:36:02 2022 GMT

上面的命令直接输出了OCSP response结果,从结果中我们很清楚的看到该网站是否支持OCSP和OCSP stapling。

推荐学习:《java视频教程

Das obige ist der detaillierte Inhalt vonJava verwendet OpenSSL, um zu erkennen, ob die Website OCSP unterstützt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen