Я получаю цепочку сертификатов с помощью openssl s_client -showcerts -connect host.whatever: 443 dev / null
.
В дополнение к этому я хотел бы программно извлечь корневой сертификат из цепочки в формате ----- BEGIN CERTIFICATE -----..... ----- КОНЕЦ СЕРТИФИКАТА -----
Кто-нибудь знает о функциональности, которая способна на это и уже поставляется с OpenSSL?
openssl s_client
показывает вам только цепочку сертификатов, отправленную клиентом. Эта цепочка обычно не включает сам корневой сертификат. Вместо этого корневой сертификат содержится только в локальном хранилище доверенных сертификатов и не отправляется сервером. Насколько мне известно, встроенного способа получить корневой сертификат для соединения с помощью командной строки openssl не существует.
Для веб-сервера нет смысла отправлять корневой сертификат, а браузер должен игнорировать его, если он отправлен (он ДОЛЖЕН быть в локальном хранилище). Если это промежуточный сертификат ЦС, то вы получите его так, как уже используете.
.