欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間: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上次更新的時(shí)間和下次更新的時(shí)間:

    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的時(shí)候可能會得到下面的異常:

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線程池框架核心代碼解析

    Java線程池框架核心代碼解析

    這篇文章主要針對Java線程池框架核心代碼進(jìn)行詳細(xì)解析,分析Java線程池框架的實(shí)現(xiàn)ThreadPoolExecutor,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Spring @value用法示例詳解

    Spring @value用法示例詳解

    這篇文章主要介紹了Spring-@value用法詳解,為了簡化讀取properties文件中的配置值,spring支持@value注解的方式來獲取,這種方式大大簡化了項(xiàng)目配置,提高業(yè)務(wù)中的靈活性,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-08-08
  • Java 8新增的方法參數(shù)反射實(shí)例分析

    Java 8新增的方法參數(shù)反射實(shí)例分析

    這篇文章主要介紹了Java 8新增的方法參數(shù)反射,結(jié)合實(shí)例形式分析了java8新增api方法參數(shù)反射相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Java序列化與反序列化

    Java序列化與反序列化

    這篇文章主要介紹了Java的序列化與反序列化,序列化把一個對象Java Object變?yōu)橐粋€二進(jìn)制字節(jié)序列byte[];反序列化就是把一個二進(jìn)制字節(jié)序列byte[]變?yōu)镴ava對象Java Object。感興趣的小伙伴可以參考閱讀
    2023-04-04
  • SpringSecurity實(shí)現(xiàn)訪問控制url匹配

    SpringSecurity實(shí)現(xiàn)訪問控制url匹配

    本文主要介紹了SpringSecurity實(shí)現(xiàn)訪問控制url匹配,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot使用阿里OSS實(shí)現(xiàn)文件云存儲的方法

    SpringBoot使用阿里OSS實(shí)現(xiàn)文件云存儲的方法

    這篇文章主要介紹了SpringBoot使用阿里OSS實(shí)現(xiàn)文件云存儲,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • des加密解密JAVA與.NET互通實(shí)例

    des加密解密JAVA與.NET互通實(shí)例

    這篇文章主要介紹了des加密解密JAVA與.NET互通實(shí)例,大家參考使用吧
    2013-12-12
  • Spring中的事件發(fā)布機(jī)制原理解析

    Spring中的事件發(fā)布機(jī)制原理解析

    這篇文章主要介紹了Spring中的事件發(fā)布機(jī)制原理解析,當(dāng)我們關(guān)心spring容器什么時(shí)候刷新,或者想在spring容器刷新的時(shí)候做一些事情,監(jiān)聽關(guān)心的事件,主要就是在ApplicationListener中寫對應(yīng)的事件,需要的朋友可以參考下
    2023-11-11
  • java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下

    java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下

    這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java中IOException異常解決方法

    Java中IOException異常解決方法

    這篇文章主要給大家介紹了關(guān)于Java中IOException異常解決的相關(guān)資料,IOException是Java中的一個受檢查異常(Checked?Exception),它是java.io包中定義的異常類之一,需要的朋友可以參考下
    2023-07-07

最新評論