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

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

3 ответа

Решение

На странице http://wiki.debuntu.org/wiki/OpenSSL перечислены командные строки для этого (и распечатана соответствующая информация). Из этой страницы и некоторых справочных страниц кажется, что вы хотите (для bash):

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

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

Этого тоже достаточно

openssl x509 -fingerprint -in server.crt

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

Фон

Начиная с Mercurial 3.9, Mercurial требует более безопасного отпечатка пальца SHA-256, в отличие от SHA-1 из предыдущих версий. Ответ Иеремии объясняет, как вычислить отпечаток SHA-1. Как указано в комментарии Дж. Мани, теперь необходимо добавить -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).

Поскольку никто не прокомментировал это, я хотел попытаться прояснить некоторую путаницу в отношении поддоменов:

сертификат предназначен для *.googlecode.com. У меня создалось впечатление, что это называется доменом с подстановочными знаками и действует для всех поддоменов.

Вы частично правы. Подстановочный сертификат действителен для всех прямых поддоменов, но не для поддоменов поддоменов.

Так *.googlecode.com действительно для pydlnadms.googlecode.com но не для wiki.pydlnadms.googlecode.com.

Для этого вам понадобится сертификат на *.pydlnadms.googlecode.com или сертификат без подстановочных знаков для wiki.pydlnadms.googlecode.com

Другие вопросы по тегам