SCROLL
Среднее время на прочтение: 2 мин.

Полезные команды по работе с SSL-сертификатами при помощи OpenSSL

Иногда приходится работать с SSL-сертификатами и каждый раз приходится вспоминать, либо искать информацию как сделать то или иное действие с сертификатами при помощи OpenSSL.

Поэтому решил создать дополняему статью на тему полезных команд по работе с SSL-сертификатами при помощи OpenSSL.

Проверка на валидность сертификата

  • Проверка .pem, .crt — сертификата.
  • Проверка .pem, .key — приватного ключа.
  • Проверка .csr — ключ запроса сертификата.

MD5 у всех должен совпадать. Важно чтобы MD5 были одинаковые только у приватного ключа (.key) и сертификата (.pem, .crt), .csr нужен в случае если понадобится продлевать данный сертификат.

openssl x509 -noout -modulus -in <cert.pem> | openssl md5
openssl rsa -noout -modulus -in <privkey.pem> | openssl md5
openssl req -noout -modulus -in <request.csr> | openssl md5

Пример.

root@openssl:~/intermediate# openssl rsa -noout -modulus -in private/server.key | openssl md5
(stdin)= f6647d0867087e0adae0d65d5451a994
root@openssl:~/intermediate# openssl x509 -noout -modulus -in certs/server.crt | openssl md5
(stdin)= f6647d0867087e0adae0d65d5451a994
root@openssl:~/intermediate# openssl req -noout -modulus -in csr/server.csr | openssl md5
(stdin)= f6647d0867087e0adae0d65d5451a994

Получение информации по сертификату

Отобразить информацию о сертификате.

openssl x509 -in <cert.pem> -text -noout

Проверка RSA закрытого ключа.

openssl rsa -in <privkey.pem> -check

Отобразить срок действия (даты) сертификата.

openssl x509 -in <cert.pem> -noout -dates

Для проверки действительности сертификата.

openssl verify -show_chain -CAfile <chain.pem> <cert.pem>

Где:

  • Ключ -show_chain — показывает полную цепочку сертификатов при проверке.
  • Ключ -CAfile — указывает файл с доверенными корневыми сертификатами для проверки цепочки.
  • <chain.pem> — промежуточный сертификат или сертификаты (можно объединить их в один файл)
  • <cert.pem> — сертификат конечного узла, который вы хотите проверить.
Если промежуточных сертификатов несколько и они в отдельных файлах, то нужно указать их все используя ключ -untrusted. Ключ -untrusted можно использовать несколько раз.

Пример успешной проверки.

certificate.crt: OK
Chain:
depth=0: CN = jakondo.ru, O = JAKONDO (untrusted)
depth=1: O = JAKONDO, CN = JAKONDO Issuing SubCA
depth=2: CN = JAKONDO Issuing RootCA

Для проверки сертификата на соответствие цепочке доверия в имени указанного хоста.

openssl verify -CAfile <chain.pem> -verify_hostname <fqdn hostname> <cert.pem>

Пример успешной и не успешной проверки для указанного хоста (jakondo.ru/jakondo.com).

openssl verify -CAfile ca_chain.crt -verify_hostname jakondo.ru certificate.crt
certificate.crt: OK

openssl verify -CAfile ca_chain.crt -verify_hostname jakondo.com certificate.crt
O = JAKONDO, CN = jakondo.ru
error 62 at 0 depth lookup: Hostname mismatch
error certificate.crt: verification failed

Операции с сертификатом

Создать PFX сертификат.

openssl pkcs12 -export -out certificate.pfx -inkey <privkey.pem> -in <cert.pem> -passout "pass:P@ssword"

Если необходимо включить CA сертификат в .pfx, то делается это так.

openssl pkcs12 -export -out certificate.pfx -inkey <privkey.pem> -in <cert.pem> -certfile <chain.pem> -passout "pass:P@ssword"

* статья будет дополнятся по мере необходимости. В комментариях можете предложить чем можно дополнить полезным, дополним.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.