Добавить в корзинуПозвонить
Найти в Дзене

Windows — генерация PFX (PKCS#12) сертификата

С помощью подсистемы Windows для Linux сгенерируем сертификат в формате PFX (PKCS#12). Нам потребуется выполнить несколько действий: Генерация CSR и KEY Сгенерируем для домена CSR и KEY на Windows 10 с помощью подсистемы Linux. Домен и IP: Включаем bash в Windows: Windows 10 - включаем bash На диске 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
Оглавление

С помощью подсистемы 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:

-2

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

-3

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

-4

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

sudo dpkg -l | grep openssl

-5

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

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

-7

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

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

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

-8

Request a certificate.

-9

Advanced certificate request.

-10

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

-11

Submit.

-12

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

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

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

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

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

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

-13

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

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

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

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

-15

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

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

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

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

-16

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

-17

Источник:
https://internet-lab.ru/win_pfx

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.