使用稍微旧版本的curl,我有一个方便的批处理文件:
curl --verbose -k https://%1 2>&1 |grep -E "Connected to|subject|expire"
这将向我显示连接到的IP,以及协商的实际证书的主题和到期日期,即使这不是该域名的正确证书 - 这有时是我们托管的问题(我们主持字面意思)我们的多租户应用程序上有数千个域,大约一半有自己的证书。
具体来说,在grep过滤之前,我会在stderr输出中看到类似的内容:
* Server certificate:
* subject: CN=academy-fran.chi.v6.pressero.com
* start date: Feb 22 04:55:00 2017 GMT
* expire date: May 23 04:55:00 2017 GMT
* issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
* SSL certificate verify ok.
今天我不得不在我的机器上重新安装操作系统,并重新安装卷曲。现在版本为7.52.1(x86_64-w64-mingw32);前一个似乎是7.49.1(i686-pc-cygwin)。如果TLS连接成功与否,则无论是否使用-k,Curl都不再显示任何证书信息。
有没有可以将它还给我的选项?
答案 0 :(得分:1)
对于OSX或Linux上的其他任何人,您可以将其添加到~/.zshrc
文件中:
function seecert () {
nslookup $1
(openssl s_client -showcerts -servername $1 -connect $1:443 <<< "Q" | openssl x509 -text | grep "DNS After")
}
示例用法,在上述添加之后运行source ~/.zshrc
后:
% seecert www.google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: www.google.com
Address: 172.217.9.68
depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = GTS CA 1O1
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = www.google.com
verify return:1
DONE
感谢@ross-presser和his answer对该功能的启发。
答案 1 :(得分:0)
这是我的替代批处理文件,使用openssl代替curl:
@echo off
nslookup %1
(openssl s_client -showcerts -servername %1 -connect %1:443 <nul |openssl x509 -text |findstr /I "DNS After") 2>nul
这给了我这个输出:
C:\>seecert www.google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: www.google.com
Address: 172.217.10.228
Name: www.google.com
Address: 2607:f8b0:4006:813::2004
Not After : Aug 16 09:49:00 2018 GMT
DNS:www.google.com