Самостоятельная генерация сертификата с использованием OpenSSL¶
Подготовка¶
- Заходим на http://slproweb.com/products/Win32OpenSSL.html
- Выбираем версию OpenSSL для загрузки, битность - соответствующая битности на компьютере.
- Загружаем OpenSSL на компьютер и устанавливаем его. В процессе установки указываем и запоминаем путь до OpenSSL.
Генерация сертификата¶
Пусть путь до OpenSSL будет у нас по умолчанию -
C:\Program Files\OpenSSL-Win64\
Если у вас другой путь - указывайте его.
Открываем консоль от имени администратора и выполняем в ней следующие шаги:
1. Перемещаемся в директорию с OpenSSL
cd C:\"Program Files"\OpenSSL-Win64\bin\
- 2. Генерируем приватный ключ длиной в 2048 бит и сохраняем его в файл
C:\cert\private.key
openssl genrsa -des3 -out C:\cert\private.key 2048
При генерации приватного ключа OpenSSL попросит создать пароль для приватного ключа. Вводим его и запоминаем - он в дальнейшем нам ещё понадобится.
3. Создаём «запрос» на получение CSR сертификата.
openssl req -new -key C:\cert\private.key -out C:\cert\certificate_csr.csrOpenSSL попросит ввести нас пароль от нашего приватного ключа (который мы создавали на втором шаге). Вводим его и нажимаем Enter. Обратите внимание - пароль не будет отображаться в консоли (скрытый ввод), поэтому вводим его внимательно.
Дальше OpenSSL попросит у нас ввести информацию о сертификате, как показано ниже:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU # Двузначный код страны, RU для России
State or Province Name (full name) [Some-State]:Moscow # Город, в котором вы находитесь
Locality Name (eg, city) []:city # Можно оставить пустым или вписать city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Robin # Название вашей организации
Organizational Unit Name (eg, section) []:section # Название подразделения
Common Name (e.g. server FQDN or YOUR name) []:Robin # На кого регистрируют этот сертификат
Email Address []:test@it.ru # Электронная почта компании
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Qwerty123 # Дополнительный пароль
An optional company name []:Robin # Дополнительное имя компании
После ввода всей информации у нас будет сгенерирован CSR-сертификат,
расположенный в C:\cert\certificate_csr.csr
.
4. Дальше у нас есть два пути развития событий.
Мы можем либо отдать сертификат на подписание в сертификационный центр, либо подписать его самостоятельно.
4.1. В случае, если мы подписываем сертификат самостоятельно - мы генерируем публичный PEM-сертификат из того, что у нас есть, сроком на год (365 дней, число можно изменить), следующей командой.
openssl x509 -req -days 365 -in c:\cert\certificate_csr.csr -signkey c:\cert\private.key -out c:\cert\certificate_pem.pem
OpenSSL запросит пароль от приватного ключа, вводим его.
Если мы подписали сертификат самостоятельно - выполняем преобразование PEM в CER:
openssl x509 -outform DER -in c:\cert\certificate_pem.pem -out c:\cert\certificate_cer.cer
4.2. В случае, если мы подписываем с помощью сертификационного центра, мы отправляем CSR-файл - запрос на подпись сертификата - в сертификационный центр. Выбираем шаблон сертификата Web Server. Обратно нам должен вернуться уже подписанный CER-сертификат.
5. Затем мы преобразуем CER в CRT - формат сертификата, понятный хранилищу сертификатов.
openssl x509 -inform DER -in c:\cert\certificate_cer.cer -out c:\cert\certificate_crt.crt
6. Создаём PFX-контейнер для сертификата. PFX-контейнер нужен для того, чтобы свободно переносить сертификат вместе с приватным ключом на флешке или любом другом носителе.
openssl pkcs12 -export -inkey C:\cert\private.key -in C:\cert\certificate_crt.crt -out C:\cert\certificate.pfx
Или p12-контейнер
openssl pkcs12 -export -inkey C:\cert\private.key -in C:\cert\certificate_crt.crt -out C:\cert\certificate.p12
OpenSSL попросит ввести пароль от приватного ключа и создать пароль для экспорта контейнера.