iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java使用openssl检测网站是否支持ocsp
  • 128
分享到

Java使用openssl检测网站是否支持ocsp

2024-04-02 19:04:59 128人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录简介支持OCSP stapling的网站获取服务器的证书获取OCSP responder地址发送OCSP请求一个更加简单的方法总结简介 OCSP在线证书状态协议是为了替换CRL而

简介

OCSP在线证书状态协议是为了替换CRL而提出来的。对于现代WEB服务器来说一般都是支持OCSP的,OCSP也是现代web服务器的标配。

但是OCSP stapling却不是所有的web服务器都支持。但是现实工作中我们可能需要知道具体某个网站对OCSP的支持程度。

支持OCSP stapling的网站

怎么判断一个web站点是否支持OCSP stapling呢?

最简单的方法就是去第三方网站查看网站的证书信息。比如我们之前提到过的entrust.ssllabs.com,通过输入对应的网站信息,在
Protocol Details一节中,可以找到网站是否支持OCSP stapling的具体信息,如下所示:

可以看到这个网站是开启了OCSP stapling的。但是事实上这个世界上的绝大部分网站是没有开启OCSP stapling的。

那么除了在第三方网站上查看OCSP stapling之外,还有没有其他办法呢?

事实上我们可以使用openssl神器轻松的做到这一点。当然前提是这个网站支持https

接下来我们会详细讲解从获取服务器的证书到验证服务器是否支持OCSP stapling的一整套流程。

本文要验证的网站是微软的官网www.squarespace.com,这是一个支持OCSP stapling的网站。

获取服务器的证书

要校验服务器是否支持OSCP,我们首先需要获取到这个服务器的证书,可以用openssl提供的 openssl s_client -connect来完成这个工作。

 openssl s_client -connect www.squarespace.com:443

这个命令会输出建立连接的所有内容,其中包含了要访问网站的证书信息。

因为我们只需要网站的证书,所以需要把-----BEGIN CERTIFICATE----------END CERTIFICATE-----之间的内容保存即可。

那么最终的命令如下:

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

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

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

除了网站本身的证书之外,网站的证书本身是由其他的证书来签发的,这些证书叫做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文件可以发现,文件里面有两个证书,最上面的一个就是服务器本身的证书,而第二个就是用于签名服务器证书的intermediate certificate。

获取OCSP responder地址

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

openssl x509 -noout -ocsp_uri -in ca.pem 

我们可以得到网站的ocsp responder地址是:Http://ocsp.digicert.com

还有一种方法可以获得ocsp responder的地址:

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 responder的地址。

发送OCSP请求

有了OCSP responder的地址,我们就可以进行OCSP验证,在这个命令中我们需要用到服务器的证书和intermediate证书。

具体的请求命令如下:

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

从输出中我们可以得到两部分,第一部分是OCSP Request Data,也就是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请求数据结构,包括issuer的内容和OCSP nonce。

第二部分是响应数据,很遗憾我们得到了下面的请求错误响应数据:

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请求成功了,这个网站是一个支持OCSP协议的网站。

后面的两行是OCSP上次更新的时间和下次更新的时间:

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

说明这个网站还支持OCSP stapling。

另外,请求某些网站的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

为什么会这样呢?

这是因为ocsp.msocsp.com这个网站不支持OCSP默认的HTTP 1.0请求,在HTTP 1.0请求中默认是没有Host这个请求头的。所以我们需要添加上Host请求头,然后再执行一次即可。

一个更加简单的方法

以上我们实际上是将请求拆开来一步步执行的。我们还可以使用openssl一步执行任务如下:

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。

总结

虽然大多数网站都不支持OCSP stapling,但是我们可以通过使用上面的命令来有效的进行判断。

到此这篇关于Java使用openssl检测网站是否支持ocsp的文章就介绍到这了,更多相关openssl检测网站内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java使用openssl检测网站是否支持ocsp

本文链接: https://www.lsjlt.com/news/154108.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java使用openssl检测网站是否支持ocsp
    目录简介支持OCSP stapling的网站获取服务器的证书获取OCSP responder地址发送OCSP请求一个更加简单的方法总结简介 OCSP在线证书状态协议是为了替换CRL而...
    99+
    2024-04-02
  • Java如何使用openssl检测网站是否支持ocsp
    这篇文章主要介绍“Java如何使用openssl检测网站是否支持ocsp”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何使用openssl检测网站是否支持ocsp”文章能帮助大家解决问题。...
    99+
    2023-07-02
  • 如何检测电脑是否支持win11
    这篇文章主要介绍“如何检测电脑是否支持win11”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何检测电脑是否支持win11”文章能帮助大家解决问题。检测方法首先我们点击右侧的链接进入下载页面,下载...
    99+
    2023-07-01
  • HTML5视频播放是否支持检测
    HTML5视频播放是否支持检测,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 代码如下:<S...
    99+
    2024-04-02
  • 怎么检测浏览器是否支持WebWorker
    本篇内容介绍了“怎么检测浏览器是否支持WebWorker”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 如何检测浏览器是否支持CSS3
    这篇文章主要介绍“如何检测浏览器是否支持CSS3”,在日常操作中,相信很多人在如何检测浏览器是否支持CSS3问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何检测浏览器是否支...
    99+
    2024-04-02
  • 怎么检测浏览器是否支持html5视频
    这篇文章主要为大家展示了“怎么检测浏览器是否支持html5视频”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么检测浏览器是否支持html5视频”这篇文章吧。运...
    99+
    2024-04-02
  • Chrome84是否支持私有方法和用户空闲检测
    今天就跟大家聊聊有关Chrome84是否支持私有方法和用户空闲检测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。安全更新恢复 SameSite Co...
    99+
    2024-04-02
  • 怎么检测网站是否存在漏洞
    检测网站是否存在漏洞的方法:可以借助漏洞扫描工具来检测,例如使用w3af工具扫描网站漏洞:安装并运行工具。在Profiles下,选择一个扫描规则。例如选择全面审计,则是选择Profiles下的“full_audit”。然后在“Target”...
    99+
    2024-04-02
  • 如何检测网站是否存在xss跨站漏洞
    检测网站是否存在xss跨站漏洞的方法:方法一:查看代码,查找关键的变量,例如在ASP的程序中,通过Request对象获取客户端的变量。<%strUserCode =  Request.QueryStrin...
    99+
    2024-04-02
  • Linux中怎么快速检测网站是否宕机
    在Linux中可以使用以下几种方法快速检测网站是否宕机: 使用ping命令:在终端中输入ping ,如果能够成功接收到响应,说明...
    99+
    2023-10-21
    Linux
  • OpenNMS是否支持对网站和Web服务的监控
    是的,OpenNMS支持对网站和Web服务的监控。通过OpenNMS可以监控网站的可用性、性能和响应时间,以及Web服务的运行状态和...
    99+
    2024-04-24
    OpenNMS
  • 脚本批量检测网站是否存活的方法
    小编给大家分享一下脚本批量检测网站是否存活的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 脚本内容编写如下:#!/bin/bashurl=(www.baid...
    99+
    2023-06-09
  • Python实现采集网站ip代理并检测是否可用
    目录开发环境模块使用代理ip结构代码实现步骤1. 导入模块2. 发送请求3. 获取数据4. 解析数据5. 检测ip质量开发环境 Python 3.8 Pycharm 模块使用 req...
    99+
    2024-04-02
  • 美国服务器如何检测网站是否被挂马
    可以借助网站挂马检测工具进行排查,比如:1、百度网站安全检测工具,能够快速帮助用户解决网站安全问题;2、百度云观测工具,具备7x24小时网站监测和报警服务,帮助用户及时发现网站问题;3、360网站安全检测工具,该工具是免费的,能够帮助用户实...
    99+
    2024-04-02
  • 在Linux终端如何快速检测网站是否宕机
    这篇文章主要为大家展示了“在Linux终端如何快速检测网站是否宕机”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Linux终端如何快速检测网站是否宕机”这篇文章吧。方法 1:使用 fping ...
    99+
    2023-06-16
  • 如何使用Cron和PHP检测网页是否被篡改
    这篇文章主要介绍“如何使用Cron和PHP检测网页是否被篡改”,在日常操作中,相信很多人在如何使用Cron和PHP检测网页是否被篡改问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Cron和PHP检测网...
    99+
    2023-06-17
  • 如何用HTML5 Canvas测试浏览器是否支持Canvas
    本篇内容介绍了“如何用HTML5 Canvas测试浏览器是否支持Canvas”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • 云电脑是否支持多人同时使用
    云电脑是指在远程服务器上运行的虚拟桌面环境,用户可以通过互联网访问并使用其中的应用程序和资源。关于云电脑是否支持多人同时使用,取决于...
    99+
    2024-04-17
    云电脑
  • Spring Shell是否支持Python在Windows上的使用?
    Spring Shell是Spring框架中的一种命令行工具,它可以帮助开发者快速构建基于命令行的应用程序。但是,很多开发者在使用Spring Shell时会遇到一个问题,那就是Python在Windows上的使用是否被支持。本篇文章将深入...
    99+
    2023-09-23
    spring shell windows
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作