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

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

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

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

9 ответов

Решение

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

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

заменив {HOSTNAME} и {PORT} на ваши значения.

Быстрый способ получения и загрузки сертификата состоит в том, чтобы выполнить следующую команду, которая направляет вывод из -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

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

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

альтернативный текст

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

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

2. Нажмите на символ замка и затем нажмите на Детали

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

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

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

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

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

    Обратите внимание, что корневой сертификат имеет значок с золотой каймой. У остальных синяя рамка.

    Смотрите скриншот ниже.

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

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

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

-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 брелок я использовал, должно быть похоже...

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

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

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

    openssl x509 -информ PEM -в certfile -text -out certdata

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

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

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

Нашел гораздо более простой способ, если на Windows. Попробовал Microsoft Edge (pre-chromium) и щелкнул по замку в адресной строке -> Просмотр сертификата Диалог всплывает с кнопкой "Экспорт в файл", которая сохраняет его в виде файла.crt.

Не много я бы использовал Edge для, но это был кусок пирога.

на компьютере с WindowsZ можно получить сертификат сервера в командной строке терминала Windows и ввести следующую команду:

      openssl s_client -connect www.github.com:443 -showcerts

Требуется установка openSSL. Скачать его можно здесь:https://slproweb.com/products/Win32OpenSSL.html .

ОткройopenSSL/binпапку и введите команду выше.

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