С помощью подсистемы Windows для Linux сгенерируем сертификат в формате PFX (PKCS#12).
Нам потребуется выполнить несколько действий:
- Генерация CSR и KEY.
- Получение подписанного сертификата PEM и цепочки P7B в центре сертификации.
- Перевод цепочки из P7B в PEM.
- Генерация PFX сертификата.
Генерация CSR и KEY
Сгенерируем для домена CSR и KEY на Windows 10 с помощью подсистемы Linux.
Домен и IP:
- DNS.1 = test00.mydomain.local
- IP.1 = 10.10.10.17
Включаем bash в Windows:
На диске C создаём папку C:\keys:
Создаём в папке файл с настройками SSL сертификата test00.cfg.
Заполняем test00.cfg:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = RU
countryName_value = RU
localityName = Locality Name (eg, city)
localityName_default = Moscow
localityName_value = Moscow
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = IT
organizationalUnitName_value = IT
organizationName = Org
organizationName_default = MyCompany
organizationName_value = MyCompany
commonName = имя сервера:
commonName_default = test00.mydomain.local
commonName_value = test00.mydomain.local
commonName_max = 64
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = test00.mydomain.local
IP.1 = 10.10.10.17
Указываем настройки для генерации CSR запроса.
Запускаем bash. Для запуска bash нужно выполнить команду "bash" или "bash.exe".
Проверим что пакет openssl установлен:
sudo dpkg -l | grep openssl
Если не установлен, то пакет ставится через apt-get:
sudo apt-get install openssl
У меня openssl уже стоит, Переходим в папку /mnt/c/keys/
cd /mnt/c/keys/
Выполняем запрос:
openssl req -out test00.csr -new -newkey rsa:2048 -nodes -keyout test00.key -config test00.cfg
В папке появляются файлы CSR и KEY.
Ключ test00.key переименовываем в key.pem. CFG файл больше не нужен, удаляем.
Получение подписанного сертификата PEM и цепочки P7B в центре сертификации
Открываем центр сертификации.
Request a certificate.
Advanced certificate request.
В Saved Request вставляем код из CSR файла. Certificate Template меняем на Web Server.
Submit.
Устанавливаем галку Base 64 encoded и скачиваем сертификат Download certificate.
Сертификат переименовываем в cert.pem.
Также скачиваем цепочку Download certificate chain в формате Base 64. Цепочка скачивается как файл certnew.p7b.
CSR файл больше не нужен, удаляем.
Перевод цепочки из P7B в PEM
Все нужные файлы у нас лежат в папке C:\keys, перенесём туда же цепочку и сертификат:
Цепочка у нас в формате P7B, это стандартный формат, когда мы скачиваем цепочку с центра сертификации Windows. Переведём цепочку в PEM формат.
Выполняем запрос:
openssl pkcs7 -print_certs -in certnew.p7b -out certnew.pem
Получаем файл certnew.pem.
Генерация PFX сертификата
Выполняем запрос:
openssl pkcs12 -inkey key.pem -in cert.pem -certfile certnew.pem -export -out cert.pfx
У нас спросят пароль, зададим пароль:
Получаем файл cert.pfx.