Получить отпечаток сертификата HTTPS-сервера из командной строки? - PullRequest
30 голосов
/ 02 марта 2011

Недавно Mercurial добавила добавленную проверку сертификата при подключении к серверам HTTPS.Я пытаюсь клонировать репозиторий вики для проекта googlecode на 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. Как извлечь этот отпечаток из командной строки?

Вопрос для родителей: Размещение изображений в коде Google

Ответы [ 4 ]

63 голосов
/ 02 марта 2011

На странице 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

Если вы хотите получить весь сертификат, не используйте символ | и все после него.

8 голосов
/ 11 октября 2014

этого тоже достаточно:

openssl x509 -fingerprint -in server.crt
6 голосов
/ 18 октября 2012

Это старая ветка, но я нашел более простой способ.Предполагая, что у вас есть файл 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
0 голосов
/ 13 июня 2019

Фон

Начиная с Mercurial 3.9 , Mercurial требуется более безопасный отпечаток SHA-256, в отличие от SHA-1 из предыдущих версий. Ответ Иеремии объясняет, как вычислить отпечаток 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> следует заменить соответствующим образом. (Чтобы ответить на исходный вопрос, можно использовать wiki.pydlnadms.googlecode.com:443, как отметил yanokwa.) Вы должны опустить https:// в URL , в противном случае вы получите ошибку Expecting: TRUSTED CERTIFICATE.

Затем можно добавить полученный отпечаток SHA-256 в файл глобальных настроек Mercurial (~/.hgrc).

...