最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用openssl檢測網(wǎng)站是否支持ocsp

 更新時間:2022年07月11日 15:05:34   作者:flydean程序那些事  
OCSP在線證書狀態(tài)協(xié)議是為了替換CRL而提出來的。對于現(xiàn)代web服務(wù)器來說一般都是支持OCSP的,OCSP也是現(xiàn)代web服務(wù)器的標(biāo)配,這篇文章主要介紹了Java使用openssl檢測網(wǎng)站是否支持ocsp,需要的朋友可以參考下

簡介

OCSP在線證書狀態(tài)協(xié)議是為了替換CRL而提出來的。對于現(xiàn)代web服務(wù)器來說一般都是支持OCSP的,OCSP也是現(xiàn)代web服務(wù)器的標(biāo)配。

但是OCSP stapling卻不是所有的web服務(wù)器都支持。但是現(xiàn)實(shí)工作中我們可能需要知道具體某個網(wǎng)站對OCSP的支持程度。

支持OCSP stapling的網(wǎng)站

怎么判斷一個web站點(diǎn)是否支持OCSP stapling呢?

最簡單的方法就是去第三方網(wǎng)站查看網(wǎng)站的證書信息。比如我們之前提到過的entrust.ssllabs.com,通過輸入對應(yīng)的網(wǎng)站信息,在
Protocol Details一節(jié)中,可以找到網(wǎng)站是否支持OCSP stapling的具體信息,如下所示:

可以看到這個網(wǎng)站是開啟了OCSP stapling的。但是事實(shí)上這個世界上的絕大部分網(wǎng)站是沒有開啟OCSP stapling的。

那么除了在第三方網(wǎng)站上查看OCSP stapling之外,還有沒有其他辦法呢?

事實(shí)上我們可以使用openssl神器輕松的做到這一點(diǎn)。當(dāng)然前提是這個網(wǎng)站支持https。

接下來我們會詳細(xì)講解從獲取服務(wù)器的證書到驗(yàn)證服務(wù)器是否支持OCSP stapling的一整套流程。

本文要驗(yàn)證的網(wǎng)站是微軟的官網(wǎng)www.squarespace.com,這是一個支持OCSP stapling的網(wǎng)站。

獲取服務(wù)器的證書

要校驗(yàn)服務(wù)器是否支持OSCP,我們首先需要獲取到這個服務(wù)器的證書,可以用openssl提供的 openssl s_client -connect來完成這個工作。

 openssl s_client -connect www.squarespace.com:443

這個命令會輸出建立連接的所有內(nèi)容,其中包含了要訪問網(wǎng)站的證書信息。

因?yàn)槲覀冎恍枰W(wǎng)站的證書,所以需要把-----BEGIN CERTIFICATE----------END CERTIFICATE-----之間的內(nèi)容保存即可。

那么最終的命令如下:

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

這里我們使用一個sed -n命令從輸出中截取以-----BEGIN開頭和以-----END結(jié)尾的數(shù)據(jù)。

最終我們得到了網(wǎng)站的證書。

除了網(wǎng)站本身的證書之外,網(wǎng)站的證書本身是由其他的證書來簽發(fā)的,這些證書叫做intermediate certificate,我們需要獲取到整個證書鏈。

同樣使用openssl的openssl s_client -showcerts命令可以獲取所有的證書鏈:

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

如果你打開chain.pem文件可以發(fā)現(xiàn),文件里面有兩個證書,最上面的一個就是服務(wù)器本身的證書,而第二個就是用于簽名服務(wù)器證書的intermediate certificate。

獲取OCSP responder地址

如果證書中包含有OCSP responder的地址,那么可以用下面的命令來獲?。?/p>

openssl x509 -noout -ocsp_uri -in ca.pem 

我們可以得到網(wǎng)站的ocsp responder地址是:http://ocsp.digicert.com。

還有一種方法可以獲得ocsp responder的地址:

openssl x509 -text -noout -in ca.pem

這個命令會輸出證書的所有信息,我們可以看到下面的內(nèi)容:

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

其中OCSP - URI就是OCSP responder的地址。

發(fā)送OCSP請求

有了OCSP responder的地址,我們就可以進(jìn)行OCSP驗(yàn)證,在這個命令中我們需要用到服務(wù)器的證書和intermediate證書。

具體的請求命令如下:

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

從輸出中我們可以得到兩部分,第一部分是OCSP Request Data,也就是OCSP請求數(shù)據(jù):

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

從請求數(shù)據(jù)中,我們可以看到詳細(xì)的OCSP請求數(shù)據(jù)結(jié)構(gòu),包括issuer的內(nèi)容和OCSP nonce。

第二部分是響應(yīng)數(shù)據(jù),很遺憾我們得到了下面的請求錯誤響應(yīng)數(shù)據(jù):

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

上面返回結(jié)果中,Cert Status: good表示的是OCSP請求成功了,這個網(wǎng)站是一個支持OCSP協(xié)議的網(wǎng)站。

后面的兩行是OCSP上次更新的時間和下次更新的時間:

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

說明這個網(wǎng)站還支持OCSP stapling。

另外,請求某些網(wǎng)站的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

為什么會這樣呢?

這是因?yàn)閛csp.msocsp.com這個網(wǎng)站不支持OCSP默認(rèn)的HTTP 1.0請求,在HTTP 1.0請求中默認(rèn)是沒有Host這個請求頭的。所以我們需要添加上Host請求頭,然后再執(zhí)行一次即可。

一個更加簡單的方法

以上我們實(shí)際上是將請求拆開來一步步執(zhí)行的。我們還可以使用openssl一步執(zhí)行任務(wù)如下:

openssl s_client -tlsextdebug -status -connect www.squarespace.com:443

從輸出中,我們可以看到下面的數(shù)據(jù):

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結(jié)果,從結(jié)果中我們很清楚的看到該網(wǎng)站是否支持OCSP和OCSP stapling。

總結(jié)

雖然大多數(shù)網(wǎng)站都不支持OCSP stapling,但是我們可以通過使用上面的命令來有效的進(jìn)行判斷。

到此這篇關(guān)于Java使用openssl檢測網(wǎng)站是否支持ocsp的文章就介紹到這了,更多相關(guān)openssl檢測網(wǎng)站內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java面試官最喜歡問的關(guān)鍵字之volatile詳解

    Java面試官最喜歡問的關(guān)鍵字之volatile詳解

    這篇文章主要給大家介紹了關(guān)于Java面試官最喜歡問的關(guān)鍵字之volatile的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Scala求和示例代碼

    Scala求和示例代碼

    這篇文章主要介紹了Scala求和示例代碼,需要的朋友可以參考下
    2019-06-06
  • MyBatis查詢無記錄時的返回值問題

    MyBatis查詢無記錄時的返回值問題

    這篇文章主要介紹了MyBatis查詢無記錄時的返回值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot任務(wù)之詳解郵件任務(wù)

    SpringBoot任務(wù)之詳解郵件任務(wù)

    今天給大家整理的文章是SpringBoot郵件任務(wù)的相關(guān)知識點(diǎn),文中有非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)SpringBoot任務(wù)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Java接口和抽象類用法實(shí)例總結(jié)

    Java接口和抽象類用法實(shí)例總結(jié)

    這篇文章主要介紹了Java接口和抽象類用法,結(jié)合實(shí)例形式總結(jié)分析了Java接口與抽象類的具體定義、使用技巧與相關(guān)注意事項,需要的朋友可以參考下
    2015-12-12
  • SpringBoot實(shí)現(xiàn)防止XSS攻擊的示例詳解

    SpringBoot實(shí)現(xiàn)防止XSS攻擊的示例詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何實(shí)現(xiàn)防止XSS攻擊,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 詳解Spring加載Properties配置文件的四種方式

    詳解Spring加載Properties配置文件的四種方式

    這篇文章主要介紹了詳解Spring加載Properties配置文件的四種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Java編程中JavaMail API的使用

    詳解Java編程中JavaMail API的使用

    這篇文章主要介紹了詳解Java編程中JavaMail API的使用,通過JavaMail可以實(shí)現(xiàn)豐富的郵件類相關(guān)功能,需要的朋友可以參考下
    2015-11-11
  • 剖析Java中線程編程的概念

    剖析Java中線程編程的概念

    這篇文章主要介紹了Java中線程編程的概念,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • 基于Java編寫一個簡單的風(fēng)控組件

    基于Java編寫一個簡單的風(fēng)控組件

    這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫一個簡單的風(fēng)控組件,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-12-12

最新評論

进贤县| 收藏| 北票市| 临湘市| 莱芜市| 通海县| 运城市| 根河市| 孟村| 顺平县| 思茅市| 固原市| 元阳县| 来宾市| 平定县| 扶绥县| 木兰县| 当雄县| 垣曲县| 重庆市| 开鲁县| 兴山县| 彩票| 蕉岭县| 新民市| 太和县| 咸阳市| 张家口市| 淳化县| 宜城市| 开封市| 赣州市| 淮滨县| 巴林右旗| 南平市| 厦门市| 万州区| 错那县| 冷水江市| 上犹县| 张家川|