Вопрос Как сохранить сертификат SSL удаленного сервера локально в виде файла


Мне нужно загрузить SSL-сертификат удаленного сервера (а не HTTPS, но SSL-квитирование должно быть таким же, как Google Chrome / IE / wget, и скручивать все, чтобы проверить ошибки проверки сертификатов) и добавить сертификат как доверенный в моих ноутбуках Windows ' потому что я не могу заставить своих ИТ-ребята дать мне сертификат CA.

это для офисных сообщений, поэтому я не могу реально использовать фактического клиента для получения сертификата.

Как мне это сделать, у меня Windows 7 и куча Linuxes, поэтому любой язык инструментов / сценариев в порядке.


263
2018-01-18 07:43


происхождения


Чтобы получить сертификат почтовый сервер, видеть security.stackexchange.com/questions/70528/... - That Brazilian Guy


ответы:


Если у вас есть доступ к OpenSSL, попробуйте

openssl s_client -connect {HOSTNAME}:{PORT} -showcerts

заменяя {HOSTNAME} и {PORT} любыми вашими значениями.


251
2017-08-17 07:20



Я предпочитаю этот вариант, так как мне не нужно открывать графический интерфейс, и я могу сделать это через SSH с наших серверов. - bramp
Кроме того, он работает для протоколов, отличных от HTTP. - matt
Решение elec3647 полностью автоматизирует извлечение PEM в трубопроводе. - phs
443 - это порт по умолчанию для HTTPS. - Flimm
мне было нужно -servername возможность получить сертификат виртуального хоста. gist.github.com/Artistan/5219484efb2fe51cd064175b3d0d5971 - Artistan


Быстрый метод получения выгруженного и загруженного сертификата состоял бы в том, чтобы запустить следующую команду, которая выводит вывод из -showcerts в команду x509 ssl, которая просто удаляет все посторонние. Например:

openssl s_client -showcerts -connect server.edu:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

Чтобы использовать сертификат, с помощью wget,

wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem

183
2017-09-05 13:47



Я попробовал это (на другом веб-сайте), но ожидал полной цепочки сертификатов: похоже, это только вернуло первое в цепочке - этого можно ожидать? - monojohnny
Это не работает для меня: невозможно загрузить сертификат 27262: ошибка: 0906D06C: процедуры PEM: PEM_read_bio: нет стартовой строки: /SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/pem/pem_lib.c: 648: Ожидание: ДОВЕРЕННОЕ СВИДЕТЕЛЬСТВО - Janusz
Я согласен с моноджонным, это не дает вам полной цепи. - Michael Munsey
Поздно, но @monojohnny: openssl s_client -showcerts отображает все сертификаты в полученной цепочке (если соединение выполнено успешно), но проходит через openssl x509 берет только первый и отбрасывает остальное. Чтобы все они вместо этого использовали ...| sed -n '/^-----BEGIN CERT/,/^-----END CERT/p' или ...| awk '/^-----BEGIN CERT/,/^-----END CERT/' Вы также можете использовать несколько более сложную awk поместить каждый сертификат в отдельный файл, который упрощает их использование с помощью openssl и некоторые другие инструменты. - dave_thompson_085
Чтобы использовать сертификат, с помощью wget, wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem - MUY Belgium


Честно говоря, я никогда не пробовал это раньше (никогда не нуждался), однако, я только что пробовал в Firefox и, похоже, работает на сохранение:

  1. Нажмите на значок сертификата SSL вверху / Padlock внизу.
  2. Нажмите View Certificate
  3. Нажать на Details табуляция
  4. Выберите, какой сертификат вы хотите от иерархии (не обведено кружком)
  5. Нажмите Export

alt text


111
2018-01-18 07:56



Полезно знать - но для моего любопытства вы можете объяснить немного больше, чего вы пытаетесь достичь? Мне никогда не нужно было экспортировать сертификат SSL-клиента, и мне очень любопытно, почему вам действительно нужно это делать ... - William Hilsum
Это сертификат сервера, а не сертификат клиента. Основной причиной экспорта клиентского закрытого ключа и сертификата является поддержка резервного копирования или проверка подлинности с использованием другого браузера или компьютера. - gbroiles
@gbroiles - прочитал вопрос, он использовал неправильную терминологию, но это решило его проблему. - William Hilsum
и я ответил на ваш вопрос: почему кто-то хочет сохранить сертификат клиента? «Сертификат клиента SSL» был вашим термином, а не его. - gbroiles
Не похоже, что есть способ сделать это в Chrome, правильно ?! - fatuhoku


Экспорт сертификата с помощью браузера Chrome

  1. Подключитесь к сайту с помощью SSL (https: // независимо)

2. Нажмите на символ блокировки, а затем нажмите «Подробности»

  1. Начиная с версии Chrome 56, вы делаете следующее: перейдите в меню «Три точки» -> «Дополнительные инструменты» -> «Инструменты разработчика», затем щелкните вкладку «Безопасность». Это даст вам Обзор безопасности с Посмотреть сертификат кнопка.

  2. Нажать на Посмотреть сертификат кнопка.

    Откроется модальное окно. Он имеет две панели. В верхней строке показана иерархия доверия сертификата сайта (последний из которых указан), промежуточный сертификат (сертификаты) и корневой сертификат (самый верхний).

    Во второй, более крупной панели отображаются детали одного из сертификатов.

    Может быть ноль или более промежуточных сертификатов.

    Обратите внимание, что в корневом сертификате есть значок с золотой рамкой. Остальные имеют синюю границу.

    См. Снимок экрана ниже.

  3. Чтобы экспортировать сертификат:

    1. Сначала щелкните значок сертификата в иерархии доверия.
    2. Сертификат будет показан в основной части модального.
    3. Нажмите на большой значок сертификата в основной части модального. Бремя значок на рабочий стол. Затем Chrome копирует сертификат на ваш рабочий стол.

enter image description here


40
2017-12-26 18:45



Мне пришлось перетащить значок в текстовый редактор, рабочий стол не работал для меня. - Cory Klein
Для Chrome в Windows после нажатия кнопки «Просмотреть сертификат» модальность отличается от Mac. Перейдите на вкладку «Сведения», а затем «Копировать в файл» ... Затем выберите формат и имя файла, что является простым. - PolyTekPatrick
Когда я использую Chrome v63 в Mac OS, текстовый файл, который я получаю от перетаскивания сертификата, доступен для чтения человеком, но не в каком-либо структурированном формате, который я могу выяснить, как преобразовать в машиночитаемую форму, такую ​​как X.509 .crt. - Jim DeLaHunt
нет разницы при открытии из адресной строки или с этой вкладки dev и до сих пор не может скачать crt ... - user25


Это ответ gbroiles, но я хотел бы отметить, что проект cURL имеет страницу с несколькими подробностями при использовании openssl для сохранения сертификата SSL удаленного сервера:

  • openssl s_client -connect {HOSTNAME}: {PORT} | tee logfile
  • Тип QUIT и нажмите клавишу Enter / Return.
  • Сертификат будет указан между отметками «BEGIN CERTIFICATE» и «END CERTIFICATE».
  • Если вы хотите видеть данные в сертификате, вы можете использовать:

    openssl x509 -inform PEM -in certfile -text -out certdata

    где certfile это сертификат, извлеченный из logfile, Заглянуть certdata,


16
2017-10-18 22:10





автоматизированный

-servername было необходимо для получения правильного сертификата с виртуального хоста на нашем сервере.

openssl s_client -showcerts -connect host.name.com:443 -servername host.name.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > host.name.com.pem

вы также можете конвертировать в сертификат для рабочего стола

openssl x509 -inform PEM -in host.name.com.pem -outform DER -out host.name.com.cer

последняя часть - добавить его в свои сертификаты, не уверен в окнах
для mac keychain, который я использовал, должен быть схожим ...

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain host.name.com.cer


4
2018-01-25 15:59



gist.github.com/Artistan/5219484efb2fe51cd064175b3d0d5971 - Artistan


Это даст результаты, содержащие только сертификаты

echo QUIT | \
openssl s_client -showcerts -connect hostname:port | \
awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' "

1
2018-05-23 01:20