Иногда приходится работать с SSL-сертификатами и каждый раз приходится вспоминать, либо искать информацию как сделать то или иное действие с сертификатами при помощи OpenSSL.
Поэтому решил создать дополняему статью на тему полезных команд по работе с SSL-сертификатами при помощи OpenSSL.
Проверка на валидность сертификата
Проверка .pem, .crt — сертификата.
Проверка .key — приватного ключа.
Проверка .csr — ключ запроса сертификата.
MD5 у всех должен совпадать. Важно чтобы MD5 были одинаковые только у приватного ключа (.key) и сертификата (.pem, .crt), .csr нужен в случае если понадобится продлевать данный сертификат.
openssl x509 -noout -modulus -in server.crt | openssl md5 openssl rsa -noout -modulus -in server.key | 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 certificate.crt -text -noout
Проверка RSA закрытого ключа:
openssl rsa -in server.key -check
Отобразить срок действия (даты) сертификата:
openssl x509 -in certificate.crt -noout -dates
Для проверки действительности сертификата:
openssl verify -show_chain -CAfile ca_chain.crt certificate.crt
Параметр -untrusted используется для предоставления промежуточных сертификатов, если промежуточных сертификатов несколько и они в отдельных файлах, то нужно указать их все, опцию -untrusted можно использовать несколько раз. Если цепочка сертификатов ЦС находится в одном файле, то нужно использовать параметр -CAfile
Пример успешной проверки:
certificate.crt: OK Chain: depth=0: CN = sysos.ru, O = SYSOS (untrusted) depth=1: O = SYSOS, CN = SYSOS Issuing SubCA depth=2: CN = SYSOS Issuing RootCA
openssl verify -CAfile ca_chain.crt -verify_hostname sysos.ru certificate.crt
Пример успешной и не успешной проверки для указанного хоста (sysos.ru/sysos.com):
openssl verify -CAfile ca_chain.crt -verify_hostname sysos.ru certificate.crt certificate.crt: OK openssl verify -CAfile ca_chain.crt -verify_hostname sysos.com certificate.crt O = SYSOS, CN = sysos.ru error 62 at 0 depth lookup: Hostname mismatch error certificate.crt: verification failed
Операции с сертификатом
Создать PFX сертификат
openssl pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt -passout "pass:P@ssword"
если необходимо включить CA сертификат в .pfx, то делается это так:
openssl pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt -certfile ca.crt -passout "pass:P@ssword"
* статья будет дополнятся по мере необходимости. В комментариях можете предложить чем можно дополнить полезным, дополним.

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА ДОНАТОМ
Использование OpenSSL (ssl security crypt cert mod_ssl apache imap postfix)
| << Предыдущая | ИНДЕКС | Правка | src / Печать | Следующая >> |
![]() | ||||
| << Предыдущая | ИНДЕКС | Правка | src / Печать | Следующая >> |
![]() | ||||
| >Для этого воспользуемся командой openssl pkcs12: > openssl pkcs12 -export -in client.pem -inkey client-key.pem -out client.p12 \ > -name “Client certificate from our organization” | |
| |||||||
| | |
| Статья отличная. Но. Начиная с версии 1.0, OpenSSL имеет возможность работать с российскими ГОСТ. Было бы полезно дополнить статью описанием работы с этими алгоритмами, а также работы с сертификатами, использующими эти алгоритмы (в частности, использование сертификатов CryptoPro). | |
| шифрации/дешифрации используется следующий синтаксис: openssl rsautl -in file -out file.cr -keyin pubkey.pem -pubin -encrypt openssl rsautl -in file.cr -out file -keyin secretkey.pem -decrypt Т.е сначала идет код, а потом описание, хоть везде наоборот. | |
| openssl req -new -x509 -sha256 -days 3650 -key ca.key.pem -out ca.cert.pem openssl genrsa -out web-server.key 4096 echo subjectAltName=DNS:iwtm.demo.lab,IP:192.168.16.10 >> extfile.cnf openssl req -new -sha256 -subj “/CN=IWTM” -key web-server.key -out web-server.csr openssl x509 -req -sha256 -days 365 -in web-server.csr -CA ca.cert.pem -CAkey ca.key.pem -out web-server.pem -extfile extfile.cnf -CAcreateserial | |
| sudo vi /opt/iw/tm5/etc/web.conf | |
| Здравствуйте! Я новичок в криптографии, поэтому прошу прощения за возможно дикие вопросы. Хотела бы спросить у знающих людей: Например, это возможно физически через openssl на Astra Linux с установленным пакетом libgost-astra | |
Последнее обновление
Правильное внедрение SSL имеет решающее значение для безопасности и успеха веб-сайта. А поскольку многие владельцы сайтов впервые знакомятся с SSL, очень важно вооружить их всеми необходимыми инструментами и утилитами. Одним из таких инструментов является OpenSSL. Итак, что такое OpenSSL, и почему он так важен?
Следующее руководство охватывает все аспекты этой полезной утилиты, включая то , как использовать OpenSSL и различные команды OpenSSL для простого и эффективного управления SSL.
OpenSSL – это универсальная криптографическая библиотека, которая предлагает применение протокола TLS с открытым исходным кодом. Он позволяет пользователям выполнять различные задачи, связанные с SSL, включая генерацию CSR (Certificate Signing Request), генерацию закрытых ключей и установку SSL-сертификата.

Для чего используется OpenSSL?
OpenSSL – это инструмент командной строки с открытым исходным кодом, который обычно используется для генерации CSR и закрытых ключей, установки SSL-файлов на Ваш сервер, объединения файлов, преобразования Вашего сертификата в различные форматы SSL, проверки информации о сертификате и устранения любых потенциальных неполадок.
Чтобы установить SSL-сертификат на свой сайт, Вы должны выполнить несколько обязательных шагов, которые одинаковы для любого сервера или почтового клиента. OpenSSL особенно удобен, когда у Вас нет веб-панели управления или Вы хотите упростить весь процесс.
Поскольку не все серверы предоставляют веб-интерфейсы для управления SSL, на некоторых платформах OpenSSL является единственным решением для импорта и настройки Вашего сертификата.
Как использовать OpenSSL
OpenSSL – это все о его командных строках. Все, что Вам нужно сделать, это выучить несколько общих команд OpenSSL, и с каждым новым сертификатом процесс настройки будет становиться все быстрее и проще.
Впервые выпущенный в 1998 году, OpenSSL доступен для систем Linux, Windows, macOS и BSD. Большинство дистрибутивов Linux поставляются с предварительно скомпилированным OpenSSL.
Как проверить, установлен ли OpenSSL в Linux?
Чтобы проверить, установлен ли OpenSSL в Вашей системе Linux, воспользуйтесь приведенными ниже командами.
Для дистрибутивов GNU/Linux, использующих пакеты rpm:
Для дистрибутивов GNU/Linux, использующих пакеты deb:
Для Arch Linux используйте:
pacman -Q openssl
Как использовать OpenSSL в Windows?
При установке по умолчанию на диске C будет создан каталог для программы – C:\OpenSSL-Win32
Чтобы запустить программу, перейдите в каталог C:\OpenSSL-Win32\bin\ и дважды щелкните на файле openssl.exe. Откроется текстовое окно с приглашением OpenSSL>.
Введите необходимые Вам команды OpenSSL в этой подсказке. Файлы, которые Вы создадите, будут находиться в этой же директории. Команды OpenSSL для Windows идентичны тем, что используются на серверах Linux.
Общие команды OpenSSL
Ниже мы собрали несколько распространенных команд OpenSSL для обычных пользователей. Используйте их в любое время, когда Вам нужно генерировать или управлять своими сертификатами.
Проверьте версию OpenSSL
Очень важно знать, какая у Вас версия OpenSSL, поскольку она определяет, какие криптографические алгоритмы и протоколы Вы можете использовать. Вы можете проверить версию OpenSSL, выполнив следующую команду:
Версия openssl -a
Сгенерируйте CSR с помощью OpenSSL
Вы можете использовать OpenSSL для создания кода CSR (Certificate Signing Request). Выполните следующую команду, чтобы сгенерировать CSR:
openssl req -new -key yourdomain.key -out yourdomain.csr
Вы также можете отправить свою информацию в самой командной строке с помощью ключа -subj.
Эта команда отключит подсказки с вопросами:
openssl req -new -key yourdomain.key -out yourdomain.csr -subj "/C=US/ST=CA/L=San Francisco/O=Your Company, Inc./OU=IT/CN=yourdomain.com"
В качестве альтернативы Вы можете создать CSR с помощью инструмента для генерации CSR.
Сгенерируйте закрытый ключ с помощью OpenSSL
Чтобы сгенерировать свой закрытый ключ, Вам нужно указать алгоритм ключа, размер ключа и необязательную кодовую фразу. Стандартный алгоритм ключа – RSA, но Вы также можете выбрать ECDSA для определенных ситуаций. Выбирая алгоритм ключа, убедитесь, что у Вас не возникнет проблем с совместимостью. В этой статье мы покажем только, как генерировать закрытый ключ с помощью алгоритма RSA.
Для размера ключа Вам следует выбрать 2048 бит при использовании алгоритма RSA и 256 бит при использовании алгоритма ECDSA. Любой размер ключа меньше 2048 небезопасен, а большее значение может замедлить работу.
Наконец, Вы должны решить, нужна ли Вам парольная фраза для закрытого ключа или нет. Обратите внимание, что некоторые серверы не принимают закрытые ключи с парольными фразами.
Когда Вы будете готовы сгенерировать свой закрытый ключ (с алгоритмом RSA), выполните приведенные ниже команды:
openssl genrsa -out yourdomain.key 2048
Эта команда создаст файл yourdomain.key в Вашей текущей директории. Ваш закрытый ключ будет в форматеPEM.
Просмотр информации о закрытом ключе с помощью OpenSSL
Вы можете просмотреть закодированное содержимое Вашего закрытого ключа с помощью следующей команды:
Расшифруйте закрытый ключ с помощью OpenSSL
Чтобы расшифровать Ваш закрытый ключ, выполните приведенную ниже команду:
openssl rsa -text -in yourdomain.key -noout
Извлеките открытый ключ с помощью OpenSSL
Чтобы извлечь Ваш открытый ключ из закрытого, выполните следующую команду:
openssl rsa -in yourdomain.key -pubout -out yourdomain_public.key
Создайте свой закрытый ключ и CSR за один раз с помощью OpenSSL
OpenSSL настолько универсален, что в нем также есть команда для генерации как Вашего закрытого ключа, так и CSR:
openssl req -out yourdomain.csr -new -newkey rsa:2048 -nodes -keyout yourdomain.key
Эта команда генерирует закрытый ключ без ключевой фразы (-keyout yourdomain.key) и код CSR (out yourdomain.csr).
Проверьте информацию CSR с помощью OpenSSL
Чтобы убедиться в том, что Вы указали правильную информацию перед отправкой CSR в Ваш ЦС, выполните приведенную ниже команду:
openssl req -text -in yourdomain.csr -noout -verify
Отправьте CSR в ЦС
Выполните следующую команду, чтобы просмотреть и скопировать все содержимое CSR:
Убедитесь, что Вы включили теги –BEGIN CERTIFICATE REQUEST– и –END CERTIFICATE REQUEST-, и вставьте все в форму заказа Вашего поставщика SSL.
Проверка сертификата в OpenSSL
После того, как Ваш ЦС доставит SSL-сертификат в Ваш почтовый ящик, выполните приведенную ниже команду, чтобы убедиться, что информация о сертификате совпадает с Вашим закрытым ключом.
openssl x509 -text -in yourdomain.crt -noout
На этом мы завершаем список общих команд OpenSSL. Если Вы хотите, Вы можете изучить все команды OpenSSL.
Нижняя линия
Теперь, когда Вы знаете, что такое OpenSSL и как он работает, Вы можете использовать его команды для генерации, управления и установки SSL-сертификатов на различные серверы. Использование OpenSSL иногда является единственным вариантом, когда у Вас нет панели хостинга.
Возможно, Вам потребуется некоторое время, чтобы освоиться с командами OpenSSL, но чем больше Вы их используете, тем лучше становится управление SSL-сертификатами.
Если Вы ищете дополнительную информацию о том, что такое OpenSSL и как он работает, эта бесплатная книга – отличный ресурс.
Часто задаваемые вопросы
В чем разница между SSL и OpenSSL?
SSL/TLS – это криптографический протокол, который шифрует связь между двумя компьютерными приложениями по сети.
С другой стороны, OpenSSL – это криптографическая утилита, которая использует командные строки для управления генерацией, установкой и идентификацией сертификатов SSL/TLS.
Является ли Openssl бесплатным для использования?
Да, OpenSSL можно свободно использовать в коммерческих и некоммерческих целях.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.




