从命令行获取HTTPS服务器的证书指纹?

时间:2011-03-02 07:56:41

标签: command-line mercurial https certificate google-code

最近Mercurial在连接到HTTPS服务器时进行了added证书验证。我正在尝试在https://wiki.pydlnadms.googlecode.com/hg/克隆googlecode项目的wiki存储库,但该证书适用于*.googlecode.com。我的印象是,这被称为通配符域,对所有子域都有效,但我收到错误:

matt@stanley:~/src$ hg clone https://wiki.pydlnadms.googlecode.com/hg/ pydlnadms-wiki
abort: wiki.pydlnadms.googlecode.com certificate error: certificate is for *.googlecode.com

据称我需要将证书指纹添加到我的hgrc中。 如何从命令行检索此指纹?

家长问题:Hosting images on Google Code

4 个答案:

答案 0 :(得分:61)

http://wiki.debuntu.org/wiki/OpenSSL#Retrieving_certificate_informations处的页面列出了该命令行(并打印出相关信息)。从那个页面和一些手册页,看起来你想要的是(对于bash):

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

如果您需要整个证书,请取消|符号及其后的所有内容。

答案 1 :(得分:8)

这也足够了:

openssl x509 -fingerprint -in server.crt

答案 2 :(得分:6)

这是一个旧线程,但我找到了一种更简单的方法。假设你有crt文件:

$ cat server.crt|openssl x509 -fingerprint 
MD5 Fingerprint=D1:BA:B0:17:66:6D:7F:42:7B:91:1E:22:7E:3A:27:D2

答案 3 :(得分:0)

背景

Since Mercurial 3.9,与以前版本的SHA-1相比,Mercurial需要更安全的SHA-256指纹。 Jeremiah's answer解释了如何计算SHA-1指纹。正如J.Money的评论中指出的那样,现在必须添加-sha256标志才能获得正确的指纹。

新命令:

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

其中<host>:<port>应该适当替换。 (要回答原始问题,请使用yanokwa指出的wiki.pydlnadms.googlecode.com:443。)您必须从网址中省略https:// ,否则会收到错误信息{{1 }}。

然后可以add the resulting SHA-256 fingerprint to Mercurial's global settings fileExpecting: TRUSTED CERTIFICATE)。