Я пытаюсь преобразовать pfx
в cer
и формат ключа
для их использования с Nginx.
Я использую следующие команды:
openssl pkcs12 -in input.pfx -out mycerts.cer -nokeys -clcerts
и
openssl pkcs12 -in input.pfx -out mycerts.key -nocerts -nodes
Проблема в том, что файлы cer
и key
не не совпадают!
openssl x509 -modulus -noout -in mycerts.crt | openssl md5
и
openssl rsa -modulus -noout -in mycerts.key | openssl md5
С другими файлами pix
процедура работает должным образом.
Как я могу получить действующий набор сертификатов для использования с nginx?
Когда я создаю новый файл pfx и запускаю те же команды, я получаю корректный результат для вашего теста.
Шаги, которые я предпринял для воспроизведения:
# generate new x509 key/cert pair
openssl req -x509 -newkey rsa:4096 -keyout cert.key -out cert.pem -days 365
# validate key and cert
openssl rsa-modulus -noout -in cert.key | openssl md5
openssl x509 -modulus -noout -in cert.pem | openssl md5
# export key/cert pair to pkcs12
openssl pkcs12 -export -out cert.pfx -in cert.pem -inkey cert.key
# extract key and cert from pkcs12 file
openssl pkcs12 -in cert.pfx -out export.crt -nokeys -clcerts
openssl pkcs12 -in cert.pfx -out export.key -nocerts -nodes
# validate exported key and cert
openssl rsa -modulus -noout -in export.key | openssl md5
openssl x509 -modulus -noout -in export.pem | openssl md5
Итак, ваш входной файл PKCS12 должен быть сконструирован ошибочно. Обратитесь к своему источнику, если файл PKCS12 неисправен, или если файл был сгенерирован вами, правильно ли был сгенерирован
PKCS12 может представлять собой сложную структуру ключей, сертификатов и промежуточного сертификата. Я не думаю, что файловая структура запрещает хранение сертификата и ключа, которые не совпадают, хотя OpenSSL запрещает это при экспорте:
$ openssl pkcs12 -export -out cert.pfx -in cert.pem -inkey other.key
No certificate matches private key