对此命令的任何解释?
openssl s_client -connect $site:443 2>/dev/null | openssl x509 -noout -enddate | cut -d'=' -f2`
和Openssl x509和openssl s_Client有什么区别?
答案 0 :(得分:0)
openssl s_client是一个命令行工具,它建立网络连接,并执行SSL / TLS握手。可以使用openssl s_client
打印有关该握手的各种数据,包括远程服务器的X509证书。
openssl x509是一个命令行工具,可以了解X509证书,并且可以解码和打印出人类可读的证书数据版本。
让我们一块一块地看看你的命令。首先,我们有:
$ openssl s_client -connect $site:443 2>/dev/null
表示要连接到$site
并执行SSL / TLS握手(并忽略任何错误)。将显示服务器的X509证书以及其他数据位;您可以使用例如:
$ openssl s_client -connect www.google.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority G2
---
...
证书数据是出现在" ----- BEGIN CERTIFICATE -----"之间的base64编码数据。和" -----结束证书-----"线。
命令的下一部分读取openssl s_client
的输出,并打印该证书的人类可读版本:
$ openssl x509 -noout -enddate
具体来说,使用-enddate
选项会使openssl x509
显示 证书过期的日期。所以将这些放在一起:
$ openssl s_client -connect www.google.com:443 2>/dev/null | openssl x509 -noout -enddate
notAfter=Apr 19 00:00:00 2016 GMT
您可以看到www.google.com
的证书何时到期。
这只留下命令的最后一部分:
$ cut -d'=' -f2 ...
注意结束日期如何显示为" notAfter = ..."?如果你的脚本/代码想要只是数据,那么没有那个领先" notAfter ="那么你需要以某种方式脱掉它。这就是cut
命令在这里所做的事情。它将这一行拆分为" ="签名,并说采取第二个字段(-f2
),只剩下" 4月19日00:00:00格林尼治标准时间"。
此命令,然后:
openssl s_client -connect $site:443 2>/dev/null | openssl x509 -noout -enddate | cut -d'=' -f2
显示仅 $site
证书到期的日期。
希望这有帮助!