为什么Openssl C API使用openssl s_client命令行获得不同的指纹结果

时间:2014-09-24 08:49:20

标签: c ssl openssl

我正在使用openssl API来获取服务器的证书指纹信息,如下面的代码所示。

X509 *cert = SSL_get_peer_certificate(ssl);
if (!X509_digest(cert, fprint_type, fprint, &fprint_size))

for (j=0; j<fprint_size; ++j) BIO_printf(outbio, "%02x ", fprint[j]);
BIO_printf(outbio,"\n");

同时,我使用命令行获取指纹如下:

openssl s_client -connect <host>:<port> < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin

然后我发现了一个奇怪的行为,在某个网站上,API打印出与命令行相同的指纹,但在某些网站中,我发现了一些奇怪的东西。

  • API将从命令行打印不同的指纹值。我使用浏览器查看网站的证书,我发现命令行的指纹值与浏览器显示相同。
  • 当API从命令行显示不同的指纹时,我发现其他东西是相同的,主题,发行者,它只是指纹不同。

我没有正确调用API有什么问题吗?请指教。谢谢。

0 个答案:

没有答案