Maison  >  Article  >  Java  >  Java utilise openssl pour détecter si le site Web prend en charge ocsp

Java utilise openssl pour détecter si le site Web prend en charge ocsp

WBOY
WBOYavant
2022-09-15 15:26:042446parcourir

Cet article vous apporte des connaissances pertinentes sur java. Le protocole d'état des certificats en ligne OCSP a été proposé pour remplacer la CRL ; les serveurs Web modernes prennent généralement en charge OCSP, et OCSP est également pris en charge par la configuration standard, jetons-y un coup d'œil. J'espère que cela sera utile à tout le monde.

Java utilise openssl pour détecter si le site Web prend en charge ocsp

Étude recommandée : "Tutoriel vidéo Java"

Le protocole de statut de certificat en ligne OCSP a été proposé pour remplacer la CRL. Les serveurs Web modernes prennent généralement en charge OCSP, et OCSP est également la norme pour les serveurs Web modernes.

Mais tous les serveurs Web ne prennent pas en charge l'agrafage OCSP. Mais dans le travail réel, nous aurons peut-être besoin de savoir dans quelle mesure un site Web spécifique prend en charge OCSP.

Sites Web prenant en charge l'agrafage OCSP

Comment déterminer si un site Web prend en charge l'agrafage OCSP ?

Le moyen le plus simple consiste à accéder à un site Web tiers pour vérifier les informations de certificat du site Web. Par exemple, nous avons déjà mentionné entrust.ssllabs.com En saisissant les informations du site Web correspondantes, dans la section
Détails du protocole, vous pouvez trouver les informations spécifiques indiquant si le site Web prend en charge l'agrafage OCSP, comme indiqué ci-dessous :

Vous peut voir Lorsque vous accédez à ce site Web, l'agrafage OCSP est activé. Mais en réalité, la plupart des sites Web dans le monde ne permettent pas l’agrafage OCSP.

En plus de vérifier l'agrafage OCSP sur des sites Web tiers, existe-t-il un autre moyen ?

En fait, nous pouvons le faire facilement en utilisant l'artefact openssl. Bien entendu, le principe est que ce site Web prend en charge https.

Ensuite, nous expliquerons en détail l'ensemble du processus depuis l'obtention du certificat du serveur jusqu'à la vérification si le serveur prend en charge l'agrafage OCSP.

Le site Web à vérifier dans cet article est le site Web officiel de Microsoft www.squarespace.com, qui est un site Web prenant en charge l'agrafage OCSP.

Obtenir le certificat du serveur

Pour vérifier si le serveur prend en charge OSCP, nous devons d'abord obtenir le certificat du serveur. Vous pouvez utiliser openssl s_client -connect fourni par openssl pour terminer ce travail.

 openssl s_client -connect www.squarespace.com:443

Cette commande affichera tout le contenu de l'établissement de connexion, y compris les informations de certificat du site Web auquel accéder.

Parce que nous n'avons besoin que du certificat du site Web, nous devons mettre -----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----. <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.com

Ensuite, la commande finale est la suivante :

openssl x509 -text -noout -in ca.pem

Ici, nous utilisons une commande sed -n pour intercepter la sortie commençant par -----BEGIN et se terminant par ---- -END. <p></p>Enfin, nous avons obtenu le certificat du site Internet. <p></p>En plus du certificat du site Web lui-même, le certificat du site Web lui-même est signé par d'autres certificats. Ces certificats sont appelés certificats intermédiaires. Nous devons obtenir l'intégralité de la chaîne de certificats. <h2></h2>Utilisez également la commande <code>openssl s_client -showcerts d'openssl pour obtenir toutes les chaînes de certificats :

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

Si vous ouvrez le fichier chain.pem, vous pouvez constater qu'il y a deux certificats dans le fichier, celui du haut est le certificat du serveur lui-même, et le second est le certificat intermédiaire utilisé pour signer le certificat du serveur.

Obtenir l'adresse du répondeur OCSP

Si le certificat contient l'adresse du répondeur OCSP, vous pouvez utiliser la commande suivante pour l'obtenir :

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

Nous pouvons obtenir l'adresse du répondeur ocsp du site Web : http:/ /ocsp.digicert .com.

Il existe une autre façon d'obtenir l'adresse du répondeur 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

Cette commande affichera toutes les informations du certificat, nous pouvons voir le contenu suivant :

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

où OCSP - URI est l'adresse du répondeur OCSP .

Envoyer la demande OCSP

Avec l'adresse du répondeur OCSP, nous pouvons effectuer la vérification OCSP. Dans cette commande, nous devons utiliser le certificat et le certificat intermédiaire du serveur.

La commande de requête spécifique est la suivante :

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

Nous pouvons obtenir deux parties de la sortie. La première partie est les données de requête OCSP, qui sont les données de la requête OCSP :

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

À partir des données de la requête, nous pouvons voir le détail. Structure des données de la demande OCSP, y compris le contenu de l'émetteur et le nom occasionnel OCSP.

La deuxième partie concerne les données de réponse. Malheureusement, nous avons obtenu les données de réponse d'erreur de requête suivantes : 🎜
openssl s_client -tlsextdebug -status -connect www.squarespace.com:443
🎜Dans le résultat renvoyé ci-dessus, Statut du certificat : bon signifie que la requête OCSP a réussi. Protocole OCSP. 🎜🎜Les deux lignes suivantes sont l'heure de la dernière mise à jour d'OCSP et l'heure de la prochaine mise à jour : 🎜
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
🎜Indique que ce site Web prend également en charge l'agrafage OCSP. 🎜🎜De plus, lorsque vous demandez l'URL OCSP de certains sites Web, vous pouvez obtenir l'exception suivante : 🎜rrreee🎜Pourquoi est-ce ? 🎜🎜En effet, le site Web ocsp.msocsp.com ne prend pas en charge la requête HTTP 1.0 par défaut d'OCSP. Dans la requête HTTP 1.0, il n'y a pas d'en-tête de requête Host par défaut. Nous devons donc ajouter l’en-tête de requête Host, puis l’exécuter à nouveau. 🎜🎜Une méthode plus simple🎜🎜Dans ce qui précède, nous avons divisé la demande et l'avons exécutée étape par étape. Nous pouvons également utiliser openssl pour effectuer des tâches en une seule étape comme suit : 🎜
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视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer