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

Command line 是否从命令行获取HTTPS服务器的证书指纹?,command-line,mercurial,https,certificate,google-code,Command Line,Mercurial,Https,Certificate,Google Code,最近,Mercurial在连接到HTTPS服务器时进行了证书验证。我正试图在https://wiki.pydlnadms.googlecode.com/hg/,但证书是针对*.googlecode.com。我的印象是,这被称为通配符域,对所有子域都有效,但我收到了错误: matt@stanley:~/src$ hg clone https://wiki.pydlnadms.googlecode.com/hg/ pydlnadms-wiki abort: wiki.pydlnadms.google

最近,Mercurial在连接到HTTPS服务器时进行了证书验证。我正试图在
https://wiki.pydlnadms.googlecode.com/hg/
,但证书是针对
*.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如何从命令行检索此指纹?

家长问题:

的页面列出了相应的命令行(并打印出相关信息)。从该页面和一些手册页面来看,您想要的似乎是(对于bash):

openssl s_客户端-连接:/dev/null | openssl x509-fingerprint-noout-in/dev/stdin

如果您想要完整的证书,请去掉
|
符号及其后的所有内容。

这是一个旧线程,但我找到了一个更简单的方法。假设您有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
这也足够了:

openssl x509 -fingerprint -in server.crt
背景 ,Mercurial需要更安全的SHA-256指纹,而不是以前版本的SHA-1。说明如何计算SHA-1指纹。正如J.Money在评论中指出的,现在必须添加
-sha256
标志才能获得正确的指纹

新命令:
openssl s_客户端-连接:/dev/null | openssl x509-fingerprint-sha256-noout-in/dev/stdin
其中
应酌情替换。(要回答原始问题,可以使用yanokwa提到的
wiki.pydlnadms.googlecode.com:443
您必须从URL中省略
https://
,否则您将得到错误
预期:可信证书


你可以(
~/.hgrc
)。

因为没有人对此发表评论,我想尝试澄清一些关于子域的混淆:

该证书适用于*.googlecode.com。我有这样的印象 这称为通配符域,对所有子域都有效

你部分正确。通配符证书对所有直接子域有效,但对子域的子域无效

因此,
*.googlecode.com
pydlnadms.googlecode.com
有效,但对
wiki.pydlnadms.googlecode.com
无效


为此,您需要为
*.pydlnadms.googlecode.com
提供一个证书,或者为
wiki.pydlnadms.googlecode.com

提供一个非通配符证书,以添加更多细节:在本例中,将显示“wiki.pydlnadms.googlecode.com:443”。有关于如何将其放入.hgrc文件的说明。您好,获取了我的服务器的指纹,并添加了[hostfingerprints]mydomain.com=09:EA:A1:28:49:24:21。。。发送到/etc/mercurial/hgrc,但尝试克隆新创建的repo会给我SSL:Server certificate verify failed[命令返回代码255 Fri Sep 14 22:31:09 2012]任何线索为什么?谢谢!散列方法可以指定为一个标志(sha1、sha256、md5):`openssl x509-fingerprint-sha256-noout-in/dev/stdin`这会获取所有额外垃圾的指纹,比如
CONNECTED(00000003)
,这对我来说没有意义。这是一个问题,因为添加证书只是一个解决办法。如果你喜欢,就戴上戒指。。。请参见“向上投票”按钮。
openssl x509 -fingerprint -in server.crt
openssl s_client -connect <host>:<port> < /dev/null 2>/dev/null | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin