最近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中。 如何从命令行检索此指纹?
答案 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 file(Expecting: TRUSTED CERTIFICATE
)。