ホームページ  >  記事  >  Java  >  Java は openssl を使用して Web サイトが ocsp をサポートしているかどうかを検出します

Java は openssl を使用して Web サイトが ocsp をサポートしているかどうかを検出します

WBOY
WBOY転載
2022-09-15 15:26:042505ブラウズ

この記事では、java に関する関連知識を提供します。OCSP オンライン証明書ステータス プロトコルは、CRL に代わるものとして提案されました。最近の Web サーバーは一般に OCSP をサポートしています。OCSP は、最新の Web サーバーの標準構成でもあります。皆さんのお役に立てれば幸いです。

Java は openssl を使用して Web サイトが ocsp をサポートしているかどうかを検出します

推奨学習: 「java ビデオ チュートリアル

OCSP オンライン証明書ステータス プロトコルは、CRL に代わるものとして提案されました。最新の Web サーバーは通常 OCSP をサポートしており、OCSP は最新の Web サーバーの標準でもあります。

ただし、OCSP ステープリングはすべての Web サーバーでサポートされているわけではありません。しかし、実際の仕事では、特定の Web サイトが OCSP をどの程度サポートしているかを知る必要がある場合があります。

OCSP ステープルをサポートする Web サイト

Web サイトが OCSP ステープルをサポートしているかどうかを確認するにはどうすればよいですか?

最も簡単な方法は、サードパーティの Web サイトにアクセスして、Web サイトの証明書情報を確認することです。たとえば、前に「trust.ssllabs.com」について説明しましたが、
「プロトコルの詳細」セクションに対応する Web サイト情報を入力すると、以下に示すように、Web サイトが OCSP ステープリングをサポートしているかどうかに関する具体的な情報が表示されます。

##この Web サイトでは OCSP ステープル留めが有効になっていることがわかります。しかし実際には、世界中のほとんどの Web サイトでは OCSP ステープル留めが有効になっていません。

では、サードパーティの Web サイトで OCSP ステープル留めを確認する以外に、他に方法はあるのでしょうか?

実際、openssl アーティファクトを使用すると、これを簡単に行うことができます。もちろん、このサイトがhttpsに対応していることが前提です。

次に、サーバーの証明書の取得からサーバーが OCSP ステープリングをサポートしているかどうかを確認するまでのプロセス全体を詳しく説明します。

この記事で検証する Web サイトは、OCSP ステープルをサポートする Microsoft の公式 Web サイト www.squarespace.com です。

サーバーの証明書を取得する

サーバーが OSCP をサポートしているかどうかを確認するには、まずサーバーの証明書を取得する必要があります。openssl が提供する openssl s_client -connect を使用してこの作業を完了できます。

 openssl s_client -connect www.squarespace.com:443

このコマンドは、アクセスする Web サイトの証明書情報を含む、接続を確立するすべての内容を出力します。

Web サイトの証明書のみが必要なので、

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE- を入れる必要があります。 --- -で囲まれた内容が保存可能です。 最終的なコマンドは次のとおりです:

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

ここでは sed -n コマンドを使用して、

-----BEGIN

と ## で始まる出力をインターセプトします。 # -----END データを終了します。 ついにウェブサイトの証明書を取得しました。

Web サイト自体の証明書に加えて、Web サイト自体の証明書は他の証明書によって署名されています。これらの証明書は中間証明書と呼ばれます。証明書チェーン全体を取得する必要があります。

openssl の

openssl s_client -showcerts

コマンドも使用して、すべての証明書チェーンを取得します。

openssl s_client -showcerts  -connect www.squarespace.com:443 | sed -n '/-----BEGIN/,/-----END/p' > chain.pem
chain.pem ファイルを開くと、次の 2 つの証明書チェーンがあることがわかります。ファイル証明書。一番上のものはサーバー自体の証明書で、2 つ目はサーバー証明書の署名に使用される中間証明書です。

OCSP レスポンダーのアドレスを取得する

証明書に OCSP レスポンダーのアドレスが含まれている場合は、次のコマンドを使用して取得できます:

openssl x509 -noout -ocsp_uri -in ca.pem

OCSP を取得できます。 Web サイトの応答側アドレスは

http://ocsp.digicert.com

です。

ocsp レスポンダーのアドレスを取得する別の方法があります:

openssl x509 -text -noout -in ca.pem

このコマンドは証明書のすべての情報を出力します。次の内容が表示されます:

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

ここで、OCSP - URI は OCSP レスポンダのアドレスです。

Send OCSP request

OCSP レスポンダーのアドレスを使用して、OCSP 検証を実行できます。このコマンドでは、サーバーの証明書と中間証明書を使用する必要があります。

具体的なリクエスト コマンドは次のとおりです:

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

出力から 2 つの部分を取得できます。最初の部分は OCSP リクエスト データで、これは OCSP リクエスト データです:

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

リクエストから このデータでは、発行者のコンテンツや OCSP nonce を含む、詳細な OCSP リクエスト データ構造を確認できます。

2 番目の部分は応答データです。残念ながら、次のリクエスト エラー応答データが得られました:

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

上記の返された結果で、Cert Status: Good は、OCSP リクエストが成功したことを意味します。このWebサイトは、OCSPプロトコルに対応したWebサイトです。

次の 2 行は、OCSP の最終更新時刻と次回更新時刻です。

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

この Web サイトが OCSP ステープル留めもサポートしていることを示します。

さらに、一部の Web サイトの OCSP URL をリクエストすると、次の例外が発生する場合があります:

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

これはなぜですか?

これは、Web サイト ocsp.msocsp.com が OCSP のデフォルトの HTTP 1.0 リクエストをサポートしていないためです。HTTP 1.0 リクエストには、デフォルトで Host リクエスト ヘッダーがありません。したがって、Host リクエスト ヘッダーを追加して、再度実行する必要があります。

より簡単な方法

上記では、実際にリクエストを分割し、段階的に実行しました。次のように、openssl を使用して 1 ステップでタスクを実行することもできます。
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视频教程

以上がJava は openssl を使用して Web サイトが ocsp をサポートしているかどうかを検出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。