Назад | Перейти на главную страницу

Openssl конвертирует pem в crt с промежуточными сертификатами

с помощью Firefox можно легко экспортировать используемый SSL-сертификат страницы как x509 со всеми промежуточными сертификатами как * .crt.

Мне нужно сделать то же самое, преобразовав файлы * .pem в * .crt как небинарный формат с помощью openssl.

Это текущие сертификаты, используемые apache:

SSLCertificateFile /etc/apache2/ssl/cert-start.pem
SSLCertificateKeyFile /etc/apache2/ssl/key-no-pw.pem
SSLCACertificateFile /etc/apache2/ssl/cert-bundle.pem

Я легко могу преобразовать SSLCertificateFile крт с:

openssl x509  -in cert-start.pem -out cert-start.crt

Чтобы построить CRT с полной цепочкой, я пробовал -chain, -clcerts без удачи.

Как правильно включить все промежуточные сертификаты из SSLCACertificateFile /etc/apache2/ssl/cert-bundle.pemтакже?

cat cert-start.pem cert-bundle.pem > chain.pem

если он также будет содержать ключ (в некоторых случаях он необходим, но зависит от использования)

cat cert-start.pem cert-bundle.pem key-no-pw.pem > full_chain.pem

Если вы проверите вывод, вы увидите что-то вроде этого (в случае с chain.pem):

-----BEGIN CERTIFICATE-----
 ... <base64 encoded server cert> ...
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
 ... <base64 encoded intermediate cert> ...
-----END CERTIFICATE-----

А в случае с full_chain.pem это будет примерно так:

-----BEGIN CERTIFICATE-----
 ... <base64 encoded server cert> ...
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
 ... <base64 encoded intermediate cert> ...
-----END CERTIFICATE-----

-----BEGIN PRIVATE KEY-----
 ... <base64 encoded key>
-----END PRIVATE KEY-----

Если вы "проверите" это, используя openssl x509 -in chain.pem вы увидите только первый (в данном случае серверный) сертификат. Все остальное будет обработано как комментарий - игнорируется. Вы должны разделить его на дополнительный файл или просто распечатать определенный диапазон строк через канал в openssl, чтобы увидеть содержимое. Настоящая проверка может быть выполнена «визуально» с помощью cat или какого-нибудь текстового редактора, который вы предпочитаете ... Как только приложение ожидает файл pem / crt, это то, что вам нужно.

Если вы хотите обрабатывать его как «контейнер», правильной формой будет pkcs12. Там вы можете обрабатывать его как набор сертификатов и обрабатывать его таким образом и просматривать / импортировать его. В этом случае команда будет

openssl pkcs12 -export -in cert-start.pem -inkey key-no-pw.pem -certfile cert-bundle.pem -out full_chain.p12 -nodes

Вывод pkcs12 можно проверить с помощью команды

openssl pkcs12 -in full_chain.p12 -nodes

Обратите внимание, что «правильный» формат (p12 или pem / crt) зависит от использования.

Вы просто объединяете их

cat domain.tld.key domain.tld.crt root.crt > domain.tld.pem