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 (стандарты криптографии с открытым ключом).
- Создание нового секретного ключа и запрос на получение сертификата
- Создание самозаверяемого сертификата
- Верификация CSR-файла
- Создание секретного RSA-ключа
- Удаление пароля-фразы из ключа
- Верификация секретного ключа
- Верификация файла сертификата
- Верификация центра сертификации
- Проверка хеш-значения сертификата
- Преобразование формата DER в PEM
- Преобразование формата PEM в DER
- Преобразование сертификата и секретного ключа в формат PKCS#12
- Создание CSR с использованием существующего секретного ключа
- Проверка содержимого сертификата в формате PKCS12
- Преобразование формата PKCS12 в PEM-сертификат
- Проверка SSL-сертификата определенного URL-адреса
- Определение версии OpenSSL
- Проверка даты истечения срока действия PEM-файла
- Проверка срока действия SSL-сертификата для URL-адреса
- Проверка, принимается ли на URL-адресеSSL V2 или V
- Проверка того, принимается ли конкретный шифр на URL-адресе
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-сертификатами.