Ada*_*tan 321 ssl ssl-certificate curl
在 Chrome 中,单击绿色的 HTTPS 锁定图标会打开一个包含证书详细信息的窗口:

当我用 cURL 尝试同样的方法时,我只得到了一些信息:
$ curl -vvI https://gnupg.org
* Rebuilt URL to: https://gnupg.org/
* Hostname was NOT found in DNS cache
* Trying 217.69.76.60...
* Connected to gnupg.org (217.69.76.60) port 443 (#0)
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate: gnupg.org
* Server certificate: Gandi Standard SSL CA
* Server certificate: UTN-USERFirst-Hardware
> HEAD / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: gnupg.org
> Accept: */*
Run Code Online (Sandbox Code Playgroud)
知道如何从命令行工具(cURL 或其他)获取完整的证书信息吗?
Ped*_*rez 423
您应该能够将 OpenSSL 用于您的目的:
echo | openssl s_client -showcerts -servername gnupg.org -connect gnupg.org:443 2>/dev/null | openssl x509 -inform pem -noout -text
Run Code Online (Sandbox Code Playgroud)
该命令连接到所需的网站,并将 PEM 格式的证书通过管道传输到另一个读取和解析详细信息的 openssl 命令。
(请注意,“冗余”-servername参数是openssl使用 SNI 支持进行请求所必需的。)
Ant*_*sta 126
这是我的日常脚本:
curl --insecure -vvI https://www.google.com 2>&1 | awk 'BEGIN { cert=0 } /^\* SSL connection/ { cert=1 } /^\*/ { if (cert) print }'
Run Code Online (Sandbox Code Playgroud)
输出:
* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
* server certificate verification SKIPPED
* server certificate status verification SKIPPED
* common name: www.google.com (matched)
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
* subject: C=US,ST=California,L=Mountain View,O=Google Inc,CN=www.google.com
* start date: Wed, 24 May 2017 17:39:15 GMT
* expire date: Wed, 16 Aug 2017 17:13:00 GMT
* issuer: C=US,O=Google Inc,CN=Google Internet Authority G2
* compression: NULL
* ALPN, server accepted to use http/1.1
* Connection #0 to host www.google.com left intact
Run Code Online (Sandbox Code Playgroud)
小智 55
nmap -p 443 --script ssl-cert gnupg.org
Run Code Online (Sandbox Code Playgroud)
该-p 443指定只扫描端口443。如果省略,将扫描所有端口,并显示找到的任何 SSL 服务的证书详细信息。该--script ssl-cert通知的Nmap脚本引擎只跑ssl-cert的脚本。从文档中,此脚本“(r)检索服务器的 SSL 证书。打印的有关证书的信息量取决于详细级别。”
示例输出:
Starting Nmap 7.40 ( https://nmap.org ) at 2017-11-01 13:35 PDT
Nmap scan report for gnupg.org (217.69.76.60)
Host is up (0.16s latency).
Other addresses for gnupg.org (not scanned): (null)
rDNS record for 217.69.76.60: www.gnupg.org
PORT STATE SERVICE
443/tcp open https
| ssl-cert: Subject: commonName=gnupg.org
| Subject Alternative Name: DNS:gnupg.org, DNS:www.gnupg.org
| Issuer: commonName=Gandi Standard SSL CA 2/organizationName=Gandi/stateOrProvinceName=Paris/countryName=FR
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2015-12-21T00:00:00
| Not valid after: 2018-03-19T23:59:59
| MD5: c3a7 e0ed 388f 87cb ec7f fd3e 71f2 1c3e
|_SHA-1: 5196 ecf5 7aed 139f a511 735b bfb5 7534 df63 41ba
Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds
Run Code Online (Sandbox Code Playgroud)
fak*_*ker 35
取决于你想要什么样的信息,但是:
openssl s_client -showcerts -connect gnupg.org:443
Run Code Online (Sandbox Code Playgroud)
应该给你最多的,虽然不像 Chrome 呈现的那样易于人类阅读。
dav*_*085 24
为了完整起见:如果您的系统上安装了Java 7 或更高版本
keytool -printcert -sslserver $host[:$port]
Run Code Online (Sandbox Code Playgroud)
以相当丑陋的格式显示几乎所有细节的链(按服务)。
你是否应该在你的系统上安装 Java 我不回答。
要检查 SSL 证书详细信息,我使用以下命令行工具,因为它可用:
https://github.com/azet/tls_tools
这是伟大的仔细检查你所有的信息正确重新签发证书或验证现有的,同时也尽可能少的依赖和它不需要任何设置。
这是输出的前几行:
$ ./check_certificate_chain.py gnupg.org 443
>> Certificate Chain:
[+]* OU=Domain Control Validated, OU=Gandi Standard SSL, CN=gnupg.org
[+]** C=FR, O=GANDI SAS, CN=Gandi Standard SSL CA
[+]*** C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Network, OU=http://www.usertrust.com, CN=UTN-USERFirst-Hardware
>> Certificate Information:
................................................................................
- [Subject]: OU=Domain Control Validated, OU=Gandi Standard SSL, CN=gnupg.org
- [Issuer]: C=FR, O=GANDI SAS, CN=Gandi Standard SSL CA
- [Valid from]: Mar 18 00:00:00 2014 GMT
- [Valid until]: Mar 18 23:59:59 2016 GMT
- [Authority]: Is not a CA
- [Version]: 2
- [Serial No.]: 43845251655098616578492338727643475746
- [X.509 Extension Details]:
-- [x509_authorityKeyIdentifier]:
keyid:B6:A8:FF:A2:A8:2F:D0:A6:CD:4B:B1:68:F3:E7:50:10:31:A7:79:21
Run Code Online (Sandbox Code Playgroud)
该输出之后是具有相同详细程度的整个证书链。
我喜欢它而不是像 openssl 的 s_client 这样的以 ssl 为中心的 cli 工具,这个工具试图只做我们大部分时间需要的一项工作。当然,openssl 更灵活(即还检查客户端证书、奇数端口上的 imap 等) - 但我并不总是需要它。
或者,如果您有时间深入了解和设置或欣赏更多功能,还有名为 sslyze 的更大工具(由于依赖项和安装而未使用它...)
如果您只想要到期日期(这不完全是答案,而是人们使用 Chrome 证书详细信息的 9/10),您可以使用:
echo | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate
对脚本等有用。
c4urself@eos ~ ? which ssl_expiry
ssl_expiry () {
echo | openssl s_client -connect ${1}:443 2> /dev/null | openssl x509 -noout -enddate
}
c4urself@eos ~ ? ssl_expiry google.com
notAfter=Jun 12 16:54:00 2018 GMT
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您想在 Windows 中执行此操作,您可以使用具有以下功能的 PowerShell:
function Retrieve-ServerCertFromSocket ($hostname, $port=443, $SNIHeader, [switch]$FailWithoutTrust)
{
if (!$SNIHeader) {
$SNIHeader = $hostname
}
$cert = $null
try {
$tcpclient = new-object System.Net.Sockets.tcpclient
$tcpclient.Connect($hostname,$port)
#Authenticate with SSL
if (!$FailWithoutTrust) {
$sslstream = new-object System.Net.Security.SslStream -ArgumentList $tcpclient.GetStream(),$false, {$true}
} else {
$sslstream = new-object System.Net.Security.SslStream -ArgumentList $tcpclient.GetStream(),$false
}
$sslstream.AuthenticateAsClient($SNIHeader)
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]($sslstream.remotecertificate)
} catch {
throw "Failed to retrieve remote certificate from $hostname`:$port because $_"
} finally {
#cleanup
if ($sslStream) {$sslstream.close()}
if ($tcpclient) {$tcpclient.close()}
}
return $cert
}
Run Code Online (Sandbox Code Playgroud)
这允许你做一些整洁的事情,比如
#Save to file and open
Retrieve-ServerCertFromSocket www.wrish.com 443 | Export-Certificate -FilePath C:\temp\test.cer ; start c:\temp\test.cer
#Display the cert details
Retrieve-ServerCertFromSocket www.wrish.com 443 | fl subject,*not*,Thumb*,ser*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
481007 次 |
| 最近记录: |