此openssl命令的解释

时间:2015-08-11 12:38:14

标签: openssl

对此命令的任何解释?

openssl s_client -connect $site:443 2>/dev/null | openssl x509 -noout -enddate | cut -d'=' -f2`

和Openssl x509和openssl s_Client有什么区别?

1 个答案:

答案 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证书到期的日期。

希望这有帮助!