Назад | Перейти на главную страницу

Сохранить удаленный сертификат SSL через командную строку Linux

Можете ли вы придумать какой-либо метод командной строки Linux для сохранения сертификата, представленного сервером HTTPS? Что-то вроде того, что curl / wget / openssl создает соединение SSL и сохраняет сертификат, а не содержимое ответа HTTP.

Эквивалент графического интерфейса тому, что я ищу, - это перейти на сайт HTTPS, дважды щелкнуть значок браузера «безопасный сайт» и экспортировать сертификат. За исключением того, что цель здесь - сделать это не интерактивно.

Спасибо, Джим

Что-то вроде:

openssl s_client -servername remote.server.net -connect remote.server.net:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/path/to/certificate.pem

Это то, что я использую с fetchmail для получения сертификата сервера IMAP или POP3 с поддержкой SSL (за исключением того, что, очевидно, я не использую порт 443)

(Обратите внимание, что "избыточный" -servername параметр необходимо сделать openssl сделать запрос с поддержкой SNI.)

Из http://www.madboa.com/geek/openssl/#cert-retrieve

#!/bin/sh
#
# usage: retrieve-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}

echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'