286

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

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

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

7 ответов7

285

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

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

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

204

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

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

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

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

45

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

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

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

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

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

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

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

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

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

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

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

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

19

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

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

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

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

13

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

-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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .