
Генерация CSR c OpenSSL в Unix/Linux
CSR (Certificate Signing Request) — это запрос на получение сертификата, который представляет собой текстовый файл, содержащий в закодированном виде информацию об администраторе домена и открытый ключ. CSR можно сгенерировать в процессе заказа SSL-сертификата или на стороне веб-сервера.
Чтобы посмотреть информацию по домену, выполните:
# openssl s_client -connect linux-notes.org:443
Или можно посмотреть сертификат по домену следующим образом:
# echo "" | openssl s_client -connect linux-notes.org:443 -prexit 2>/dev/null | sed -n -e '/BEGIN\ CERTIFICATE/,/END\ CERTIFICATE/ p'
А сейчас, перейдем к генерации CSR.
Генерация ключа с OpenSSL
Для начала нужно создать ключ:
# openssl genrsa -out key_name.key 2048
Где:
- key_name.key — Названия ключа.
- 2048 — Длина ключа.
Для увеличения дополнительной безопасности можно увеличить длину в битах:
# openssl genrsa -out key_name.key 4096
PS: Данные команды создаут ключ БЕЗ ПАРОЛЯ. При необходимости, можно установить пароль, но для этого нужно добавить опцию «-des3»:
# openssl genrsa -des3 -out key_name.key 4096
Можно указать пароль прям в командной строке:
# openssl genrsa -des3 -out key_name.key -passout pass:YOUR_PASSWORD_HERE 2048
Где:
- YOUR_PASSWORD_HERE — Это установленный пароль.
Идем далее….
Создание файла запроса на подпись сертификата (CSR)
Ключ уже имеется (сгенерировали его в предыдущем действии) и на основании этого ключа, можно создать запрос на подпись сертификата с приминением алгоритма sha256:
# openssl req -out CSR.csr -key key_name.key -new -sha256
После чего, стоит ввести необходимую информацию:
- Country Name () — Задаем имя страны, нужно ввести двухбуквенный код вашей страны в формате Международной организации по стандартизации (ISO), обозначающий страну, где ваша организация официально зарегистрирована.
- State or Province Name (full name) — Введите область или штат, где расположена ваша организация. Не используйте сокращения.
- Locality Name (eg, city) — Вводим город или населенный пункт, где расположена ваша организация. Не используйте сокращения.
- Organization Name (eg, company) — Вводим название вашей организации.
- Organizational Unit Name (eg, section) — Название организационного подразделения.
- Common Name (eg, fully qualified host name) — Вводим название домена или URL, который требуется защитить.
Если вы запросили сертификат Wildcard, добавьте звездочку (*) слева от общего имени там, где требуется универсальный символ, например *.linux-notes.org. - Email Address — Вводим свой почтовый адрес.
Для проверки CSR, можно использовать следующую команду:
# openssl req -in CSR.csr -noout -text
Ответ должен показывать следующее, если подпись верна.
Signature Algorithm: sha256WithRSAEncryption
PS: Чтобы выполнить сгенерировать все что необходимо одной командой, выполните:
# openssl req -new -newkey rsa:2048 -nodes -out NAME_of_CSR.csr -keyout NAME_of_KEY.key -subj "/C=US/ST=Wisconsin/L=Waukesha/O=IT Dept/OU=The linux-notes companies/CN=www.linux-notes.org"
Где:
- -out NAME_of_CSR.csr — Задаем имя CSR.
- -keyout NAME_of_KEY.key — Задаем имя ключа.
- -subj «/C=US/ST=Wisconsin/L=Waukesha/O=IT Dept/OU=The linux-notes companies/CN=www.linux-notes.org» — Чтобы не вводить руками необходимую информацию в процессе генерации CSR, можно использовать данную команду.
Для проверки использующего алгоритма, можно использовать следующую команду:
# openssl s_client -connect linux-notes.org:443 < /dev/null 2>/dev/null | openssl x509 -text -in /dev/stdin | grep "Signature Algorithm"
Установка сертификата (CRT)
Все зависит от того, какое ПО вы будите использовать. Я не стану рассказывать как правильно устанавливать сертификаты. Если у кого-то возникнут трудности — я смогу помочь.
Тестирование установленного сертификата
Я приведу несколько сервисов которыми пользуюсь, для тестирования сертификатов на предмет правильной установки, срока валидности и т.д.
- Ssllabs(точка)com
- Sslshopper(точка)com
- Digicert(точка)com
Полезное чтиво:
Примеры использования OpenSSL в Unix/Linux
На этом у меня все, статья «Генерация CSR с OpenSSL с SHA256» завершена.