Preciso baixar um certificado SSL no formato PEM de um site HTTPS, https://api.paczkomaty.pl . Então, estou usando o OpenSSL para fazer isso:
openssl s_client -connect api.paczkomaty.pl:443 > myfile
openssl x509 -in myfile -text
Aqui está o resultado:
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
(...)
No entanto, quando visito o site por meio de um navegador (Chrome ou Firefox) e inspeciono seu certificado, ele me mostra um diferente; seu número de série é diferente e sua validade é de 15/01/2018 a 01/09/2018.
Por que o OpenSSL está buscando um certificado diferente?
s_client
por padrão, não envia dados SNI (Server Name Indication), mas um navegador envia. O servidor pode optar por responder com um certificado diferente com base no conteúdo desse SNI - ou, se nenhum SNI estiver presente, ele servirá um certificado padrão. Tente adicionar-servername api.paczkomaty.pl
à suas_client
linha de comandoVários sites SSL/TLS no mesmo servidor físico, usando TLS SNI (Server Name Indication). Se o cliente não fornecer informações SNI (o OpenSSL não fornecerá
s_client
, a menos que solicitado), algum certificado de site padrão de fallback será usado.Adicione a
-servername
opção ao seuopenssl s_client
comando assim: