OpenSSL -что это? 21 пример команд OpenSSL, которые помогут вам на практике

Одним из самых популярных инструментов для создания и управления SSL-сертификатами является библиотека OpenSSL. В этой статье я расскажу о часто используемых командах OpenSSL.

Некоторые аббревиатуры, относящиеся к сертификатам:

  • SSL – Secure Socket Layer (уровень защищённых cокетов).
  • CSR – Certificate Signing Request (запрос на получение сертификата).
  • TLS – Transport Layer Security (протокол защиты транспортного уровня).
  • PEM – Privacy Enhanced Mail (формат файлов для хранения и отправки криптографических ключей).
  • SHA – Secure Hash Algorithm (алгоритм криптографического хеширования).
  • PKCS – Public-Key Cryptography Standards (стандарты криптографии с открытым ключом).
Содержание

1. Создание нового секретного ключа и запрос на получение сертификата

opensslreq -out geekflare.csr -newkey rsa:2048 -nodes -keyoutgeekflare.key

Команда генерирует CSR и файл 2048-битногоRSA-ключа. Если вы собираетесь использовать этот сертификат на Apache или Nginx, то необходимо отправить CSR-файл в центр сертификации. Он предоставит вам заверенный сертификат (в формате der или pem), который нужно настроить на веб-сервере Apache или Nginx.

2. Создание самозаверяемого сертификата

opensslreq -x509 -sha256 -nodes -newkey rsa:2048 -keyoutgfselfsigned.key -out gfcert.pem

Команда генерирует самозаверенный сертификат и файл 2048-битного RSA-ключа. Я также включил в команду хеш-функцию sha256, поскольку она считается наиболее безопасной.

Совет: По умолчанию команда генерирует самозаверенный сертификат, действительный только один месяц. Для увеличения этого срока переопределите параметра - days.

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

opensslreq -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyoutgfselfsigned.key -out gfcert.pem

3. Верификация CSR-файла

opensslreq -noout -text -in geekflare.csr

Верификация необходима, чтобы отправленный в регистрационный центр CSR-файл содержал всю необходимую информацию.

4. Создание секретного RSA-ключа

opensslgenrsa -out private.key 2048

Если нужно создать секретный RSA-ключ, используйте приведенную выше команду.

5. Удаление пароля-фразы из ключа

opensslrsa -in certkey.key -out nopassphrase.key

Если вы используете составной пароль (фразу) в файле ключа и работаете на Apache, то при каждом запуске нужно вводить секретную фразу. Если вас это раздражает, то можно использовать приведенную выше команду, чтобы удалить пароль-фразу из существующего ключа.

6. Верификация секретного ключа

opensslrsa -in certkey.key –check

Если вы сомневаетесь в файле ключа, то можете использовать данную команду.

7. Верификация файла сертификата

openssl x509 -in certfile.pem -text –noout

Если хотите проверить данные сертификата, такие как CN, OU и т.д., используйте приведенную выше команду, которая предоставит данные сертификата.

8. Верификация центра сертификации

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Для проверки центра сертификации можно использовать приведенную выше команду.

9. Проверка хеш-значения сертификата

openssl x509 -noout -hash -in bestflare.pem

10. Преобразование формата DER в PEM

openssl x509 –inform der –in sslcert.der –out sslcert.pem

Центр сертификации предоставляет SSL-сертификат в формате .der. Если вам необходимо использовать его в формате apache или .pem, примените приведенную выше команду для соответствующего преобразования.

11. Преобразование формата PEM в DER

openssl x509 –outform der –in sslcert.pem –out sslcert.der

Если необходимо изменить формат .pem на .der.

12. Преобразование сертификата и секретного ключа в формат PKCS#12

openssl pkcs12 –export –out sslcert.pfx –inkeykey.pem –in sslcert.pem

Если необходимо использовать сертификат с Java-приложением, принимающим только формат PKCS#12, примените приведенную выше команду. Она генерирует один pfx файл, содержащий сертификат и ключ.

Совет. Вы также можете включить цепочку сертификатов, передав параметр -chain, как показано в примере ниже.

openssl pkcs12 –export –out sslcert.pfx –inkeykey.pem –in sslcert.pem -chain cacert.pem

13. Создание CSR с использованием существующего секретного ключа

opensslreq –out certificate.csr –keyexisting.key –new

Если не хотите создавать новый секретный ключ вместо существующего, выполните приведенную выше команду.

14. Проверка содержимого сертификата в формате PKCS12

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 является двоичным форматом, поэтому вы не сможете просмотреть его содержимое в текстовом редакторе. Для просмотра файла в формате PKCS12 используйте приведенную выше команду.

15. Преобразование формата PKCS12 в PEM-сертификат

openssl pkcs12 –in cert.p12 –out cert.pem

Если нужно использовать существующий файл в формате pkcs12 на Apache или только в формате pem, в этом поможет приведенная выше команда.

16. Проверка SSL-сертификата определенного URL-адреса

openssls_client -connect yoururl.com:443 –showcerts

Я часто использую эту команду для проверки SSL-сертификата URL-адреса. Это удобно для проверки данных протокола, шифрования и сертификата.

17. Определение версии OpenSSL

openssl version

18. Проверка даты истечения срока действия PEM-файла

openssl x509 -noout -in certificate.pem -dates

Команда выведет дату в формате notBefore и notAfter. notAfter - это та дата, которая нужна, чтобы определить, истек ли срок действия сертификата или он еще действителен.

Пример:

[root@Chandan opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[root@Chandan opt]#

19. Проверка срока действия SSL-сертификата для URL-адреса

openssls_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

Команда позволяет контролировать дату истечения срока действия SSL- сертификата удаленно или для конкретного URL-адреса.

Пример:

[root@Chandan opt]# openssls_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

20. Проверка, принимается ли на URL-адресеSSL V2 или V

Чтобы проверить SSL V2:

openssls_client -connect secureurl.com:443 -ssl2

Чтобы проверить SSL V3:

openssls_client -connect secureurl.com:443 –ssl3

Чтобы проверить TLS 1.0:

openssls_client -connect secureurl.com:443 –tls1

Чтобы проверить TLS 1.1:

openssls_client -connect secureurl.com:443 –tls1_1

Чтобы проверить TLS 1.2:

openssls_client -connect secureurl.com:443 –tls1_2

Если необходимо проверить, включен ли SSL V2 / V3 или нет, используйте приведенную выше команду. Если он включен, то вы получите сообщение «CONNECTED», в противном случае –сообщение «handshake failure».

21. Проверка того, принимается ли конкретный шифр на URL-адресе

openssls_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Если хотите знать, принимаются ли некоторые слабые шифры, то можете использовать приведенную выше команду.

Для этого необходимо задать шифр и URL-адрес. Если шифр будет принят, вы получите сообщение «CONNECTED», иначе – сообщение «handshake failure».

Надеюсь, что приведенные выше команды помогли вам узнать больше об использовании OpenSSL для управления SSL-сертификатами.

Вадим Дворниковавтор-переводчик статьи «21 OpenSSL Examples to Help You in Real-World»

Пожалуйста, оставьте свои отзывы по текущей теме материала. Мы очень благодарим вас за ваши комментарии, подписки, дизлайки, лайки, отклики!