Перейти к основному содержанию
 

Windows — генерация PFX (PKCS#12) сертификата с помощью подсистемы Linux

Security

С помощью подсистемы Windows для Linux сгенерируем сертификат в формате PFX (PKCS#12).

Нам потребуется выполнить несколько действий:

  1. Генерация CSR и KEY.
  2. Получение подписанного сертификата PEM и цепочки P7B в центре сертификации.
  3. Перевод цепочки из P7B в PEM.
  4. Генерация PFX сертификата.

Генерация CSR и KEY

Сгенерируем для домена CSR и KEY на Windows 10 с помощью подсистемы Linux.

Домен и IP:

  • DNS.1 = test00.mydomain.local
  • IP.1 = 10.10.10.17

Включаем bash в Windows:

Windows 10 - включаем bash

На диске C создаём папку C:\keys:

rsa

Создаём в папке файл с настройками SSL сертификата test00.cfg.

ssl

Заполняем 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".

bash

Проверим что пакет openssl установлен:

sudo dpkg -l | grep openssl

rsa

Если не установлен, то пакет ставится через 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

ssl

В папке появляются файлы CSR и KEY.

ssl

Ключ test00.key переименовываем в key.pem. CFG файл больше не нужен, удаляем.

Получение подписанного сертификата PEM и цепочки P7B в центре сертификации

Открываем центр сертификации.

ssl

Request a certificate.

ssl

Advanced certificate request.

ssl

В Saved Request вставляем код из CSR файла. Certificate Template меняем на Web Server.

ssl

Submit.

ssl

Устанавливаем галку Base 64 encoded и скачиваем сертификат Download certificate.

Сертификат переименовываем в cert.pem.

Также скачиваем цепочку Download certificate chain в формате Base 64. Цепочка скачивается как файл certnew.p7b.

CSR файл больше не нужен, удаляем.

Перевод цепочки из P7B в PEM

Все нужные файлы у нас лежат в папке C:\keys, перенесём туда же цепочку и сертификат:

pem

Цепочка у нас в формате P7B, это стандартный формат, когда мы скачиваем цепочку с центра сертификации Windows. Переведём цепочку в PEM формат.

Выполняем запрос:

openssl pkcs7 -print_certs -in certnew.p7b -out certnew.pem

ssl

Получаем файл certnew.pem.

ssl

Генерация PFX сертификата

Выполняем запрос:

openssl pkcs12 -inkey key.pem -in cert.pem -certfile certnew.pem -export -out cert.pfx

У нас спросят пароль, зададим пароль:

ssl

Получаем файл cert.pfx.

ssl