查看SSL证书以作废

如今,安全信息传输的最重要方面之一是加密。 使用SSL证书对从客户端传输到服务器的数据进行加密。 证书是由认证机构认证的公钥。

通常,所有SSL证书的发行期限都是有限的,在此之后它们将过期,并且必须重新发行。 但是,有时证书可以在到期日期之前被吊销。 吊销SSL证书的原因很多,其中最常见的原因是私钥丢失或被破坏,公司注册数据已更改等。

有两种方法可以检查吊销列表中是否包含SSL证书:

  • CRL(证书吊销列表)-检查吊销列表中是否存在证书序列号。
  • OCSP(在线证书状态协议)-证书被发送到专用服务器,在此检查其状态。

让我们使用Ubuntu控制台更详细地介绍这两种方法。 并以一个示例为例,让我们检查habr.com域的证书以进行审查。

CRL


下载我们感兴趣的域的证书:

echo -n | openssl s_client -connect habr.com:443 -servername habr.com 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/habr.com.crt 

感谢Legioner提示添加-servername参数-如果在同一IP地址上安装了多个(SNI)证书,则必须正确选择证书。

我们查看证书的详细信息:

 openssl x509 -noout -text -in /tmp/habr.com.crt 

在这里,我们对“ X509v3 CRL分发点”部分的“全名”感兴趣。

从此链接下载CLR列表:

 wget http://crl.comodoca.com/COMODORSADomainValidationSecureServerCA.crl 

我们选择证书的序列号:

 openssl x509 -in /tmp/habr.com.crt -noout -serial 

我们看一下这个数字是否在CRL列表中:

 openssl crl -inform DER -text -in COMODORSADomainValidationSecureServerCA.crl | grep "90E58B0601C3AD98F07AEE092041C437" 

如果未找到任何内容,则证书不会被吊销。

OCSP


我们将显示我们感兴趣的域的证书以及中间证书链:

 echo -n | openssl s_client -connect habr.com:443 -showcerts 

将域证书和中间证书(在----- BEGIN CERTIFICATE -----和----- END CERTIFICATE -----之间的代码)保存到文件中:

 /tmp/habr.com.crt /tmp/intermediate.crt 

定义OCSP服务器:

 openssl x509 -in /tmp/habr.com.crt -noout -ocsp_uri 

我们将向OCSP服务器发送请求,以检查证书是否吊销:

 openssl ocsp -url http://ocsp.comodoca.com -issuer /tmp/intermediate.crt -cert /tmp/habr.com.crt -text 

如果正确指定了所有内容,则OCSP服务器应返回有关证书的信息。

这是您感兴趣的最后几行:

 Response verify OK /tmp/habr.com.crt: good 

撤消证书列表中没有证书的情况由值“好”表示,如果证书被撤消,则该值将被“撤消”。

自动化技术


手动检查SSL证书以进行吊销并不总是很方便,因此可以自动执行验证过程。

为此,我们将现成的ssl-check-revoc.sh脚本与Github一起使用 ,该脚本使用CRL方法检查证书:

 wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh 

接下来,使脚本可执行:

 chmod a+x ssl-check-revoc.sh 

现在,您可以检查域的已安装证书和本地存储在文件中的证书(选项-f):

 ./ssl-check-revoc.sh habr.com -v 

扎比克斯


ssl-check-revoc.sh脚本不仅可以从控制台检查证书,而且还非常适合作为Zabbix的检查器,因此可以将跟踪到吊销列表的证书的所有脏工作委托给监视系统。

我们进入Zabbix配置文件/etc/zabbix/zabbix_server.conf,看看用于外部检查的脚本在哪里:

 ExternalScripts=/etc/zabbix/externalscripts 

我们将脚本复制到此目录,然后重新启动Zabbix:

 sudo cp ssl-check-revoc.sh /etc/zabbix/externalscripts/ sudo systemctl restart zabbix-server 

我们进入Web界面并创建一个模板(配置>>模板>>创建模板)。 对于模板的名称,请指定“模板SSL检查”。 然后,在模板内部,创建“吊销列表中的SSL证书”项(项目),指定“ ssl-check-revoc.sh [{HOST.NAME}]”作为密钥,检查类型为“外部检查”。 您可以根据项目的关键程度自由设置检查间隔。



您还将需要两个触发器:

1.要发出证书吊销“域{HOST.NAME}的证书在吊销列表中”的信号
表达式:“ {模板自定义SSL检查:ssl-check-revoc.sh [{HOST.NAME}]。Last()} = 1”



2.如果出现问题(例如,CLR服务器出现问题等),以发出错误信号“检查域{HOST.NAME}的证书时出错”
表达式:“ {模板自定义SSL检查:ssl-check-revoc.sh [{HOST.NAME}]。Last()} = 2”



如果发生触发器,请不要忘记在操作(配置>>操作)中配置通知方法。

现在剩下的工作就是创建主机,我们将定期检查其证书(配置>>主机>>创建主机)。 在模板标签上,链接我们的模板SSL检查模板。



就是这样! 您可以安然入睡:如果您的域的SSL证书由于任何原因落入了被撤消的SSL列表,Zabbix会立即通知您。

Source: https://habr.com/ru/post/zh-CN417521/


All Articles