Экспортировать полную цепочку сертификатов сайта с помощью openssl, аналогично тому, как это делает Chrome.

Вопрос или проблема

При использовании Chrome (а также, вероятно, других браузеров) я могу проверить цепочку сертификатов:
Экспорт Chrome

Отсюда я могу экспортировать полную цепочку в формате Base64-кодированного ASCII, цепочка сертификатов
Формат экспорта

Полученный файл выглядит примерно так:

-----BEGIN CERTIFICATE-----
MIIDqzCCAzGgAwIBAgISBNJAnQnZ18furlY6bSIhUWVTMAoGCCqGSM49BAMDMDIx
...
GdWDvkyg3wNvGaH94nrgRdvyFRcAc8Vekw8mjyGYAw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
...
VQD9F6Na/+zmXCc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
...
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----

Вопрос в том, как я могу получить точно такой же результат с помощью openssl?
Как просмотреть цепочку сертификатов с использованием openssl связано с этим, но выполнение следующей команды:

echo | openssl s_client -connect serverfault.com:443 -showcerts

Возвращает только 2 блока сертификатов, а не полную цепочку. И в ней есть другие части, мне просто нужны BEGIN -> END CERTIFICATE.

Бонусный вопрос: как в технических терминах называется часть BEGIN -> END CERTIFICATE?

Ответ или решение

Для экспорта полного цепочки сертификатов сайта с использованием OpenSSL, аналогично тому, как это делают браузеры, такие как Chrome, необходимо выполнить несколько шагов. Здесь я поясню, как это сделать, и отвечу на бонусный вопрос о том, как правильно называть части сертификата.

Шаги для экспорта полного цепочки сертификатов

  1. Убедитесь, что OpenSSL установлен: Первым делом проверьте, что программа OpenSSL установлена на вашем компьютере. Если нет, установите её, следуя инструкциям для вашей операционной системы.

  2. Получение сертификатов с используя s_client: Откройте терминал и выполните следующую команду, заменив example.com на доменное имя, для которого вы хотите получить сертификаты:

    echo | openssl s_client -connect example.com:443 -showcerts

    Данная команда инициирует соединение с сервером через порт 443 (стандартный для HTTPS) и выведет информацию о сертификатах, включая цепочку.

  3. Фильтрация сертификатов: Вы получите вывод, содержащий множество строк, включая информацию о соединении и самих сертификатах. Чтобы отфильтровать только сертификаты, выполните следующую команду:

    echo | openssl s_client -connect example.com:443 -showcerts 2>/dev/null | awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/' RS='' | sed 's/^.*\(\(-----BEGIN CERTIFICATE-----\|-----END CERTIFICATE-----\)\s*\n\|\(\.\|\n\)*\)*\s*//g; s/\n\s+/ /g'

    В этой команде:

    • awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/' ищет блоки сертификатов от BEGIN CERTIFICATE до END CERTIFICATE.
    • RS='' используется для обработки блоков текста.
    • sed дополнительно очищает вывод для его лучшего отображения.
  4. Экспорт в файл: Если вы хотите экспортировать сертификаты в отдельный файл, выполните следующую команду:

    echo | openssl s_client -connect example.com:443 -showcerts 2>/dev/null | awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/' RS='' > cert_chain.pem

    После выполнения этой команды сертификаты будут сохранены в файл cert_chain.pem в формате Base64-encoded ASCII, который может быть открыт и просмотрен с помощью текстового редактора.

Технические термины

Что касается бонусного вопроса о технических терминах, части, заключенные между строками -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----, называют "дистанционными сертификационными блоками" или просто "сертификатами". В контексте PKI (Public Key Infrastructure) это выражение указывает на сертификат, который содержит публичный ключ и информацию о владельце, а также подпись удостоверяющего центра (CA).

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...