OpenSSL 获取的 SSL 证书与通过浏览器获取的证书不同

OpenSSL 获取的 SSL 证书与通过浏览器获取的证书不同

我需要从 HTTPS 网站下载 PEM 格式的 SSL 证书,https://api.paczkomaty.pl。所以我使用 OpenSSL 来做到这一点:

openssl s_client -connect api.paczkomaty.pl:443 > myfile
openssl x509 -in myfile -text 

结果如下:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0d:5a:87:30:7e:43:96:05:5e:20:f3:2f:14:a4:d9:47
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = GeoTrust Inc., CN = RapidSSL SHA256 CA
        Validity
            Not Before: Mar 11 00:00:00 2017 GMT
            Not After : Apr 10 23:59:59 2018 GMT
        Subject: CN = *.grupainteger.pl
(...)

然而,当我通过浏览器(Chrome 或 Firefox)访问该网站并检查其证书时,它显示了不同的证书;其序列号不同,有效期为15/1/2018至1/9/2018。

为什么 OpenSSL 获取不同的证书?

答案1

为什么 OpenSSL 获取不同的证书?

s_client默认情况下不发送 SNI(服务器名称指示)数据,但浏览器会发送。服务器可以根据该 SNI 的内容选择使用不同的证书进行响应,或者如果不存在 SNI,则它将提供默认证书。尝试添加-servername api.paczkomaty.pl到您的s_client命令行

答案2

同一物理服务器上的多个 SSL/TLS 站点,使用 TLS SNI(服务器名称指示)。如果客户端不提供 SNI 信息(OpenSSLs_client不会提供,除非被告知),则会使用一些后备默认站点证书。

将选项添加-servername到您的openssl s_client命令中,如下所示:

openssl s_client -servername api.paczkomaty.pl -connect api.paczkomaty.pl:443 > myfile

相关内容