Получить отпечаток сертификата 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