Пришла задачка, выпустить запароленный PFX сертификат от какого-то центра сертификации, который я в глаза не видел. Прислали только CN для сертификата. После непродолжительных поисков удалось найти ключ rootCA.key и корневой сертификат rootCA.pemот центра сертификации. Где крутится сам центр сертификации — эта информация канула в веках, а сертификат просят выпустить уже сейчас. Но этих данных нам уже достаточно.
Имеем:
- rootCA.pem
- rootCA.key
Генерируем ключ:
openssl genrsa -out mycn.key 2048Генерируем запрос на CSR:
openssl req -new -key mycn.key -out mycn.csrУказываем параметры запроса:
- Country Name
- State or Province Name
- Locality Name
- Organization Name
- Organizational Unit Name
- Common Name
- Email Address
И указываем пароль от рутового ключа.

Для версии V1 можно сразу сгенерировать сертификат:
openssl x509 -req -in mycn.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out mycn.crt -days 365 -sha256Для версии V3 создаем конфиг:
cat > v3.ext << EOF
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = DNS:mycn.example.com, DNS:localhost
EOFПотом генерируем сертификат:
openssl x509 -req -in mycn.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out mycn.crt -days 365 -sha256 -extfile v3.extСобираем PFX, указываем пароль челленджа:
openssl pkcs12 -export -out mycn.pfx -inkey mycn.key -in mycn.crt -certfile rootCA.pem
Готово.