1

Я пытаюсь использовать OpenSSL для преобразования файла PEM и закрытого ключа RSA в файл PFX. Вот пример команды, которую я пытался использовать:

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

При этом я получаю следующее сообщение об ошибке:

unable to load private key
9068:error:0906D06C:PEM routines:PEM_read_bio:no start 
line:pem_lib.c:696:Expecting: ANY PRIVATE KEY

Файл сертификата выглядит так:

-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----

и закрытый ключ выглядит так:

-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----

Я покопался в ошибке, но пока не нашел решения.

РЕДАКТИРОВАТЬ

После некоторых дополнительных исследований возникла проблема с различными версиями openssl.

Если я запускаю его в моей системе OSX, которая работает 0.9.8zh 14 января 2016 года, эти заявления работают нормально.

Однако, если я запускаю его на Windows-машине с версией OpenSSL 1.0.1p 9 июля 2015 года и OpenSSL 1.1.0g 2 ноября 2017 года, я получаю вышеуказанные ошибки.

1 ответ1

0

После нескольких копаний я обнаружил, что именно скрипты Powershell генерируют файлы ключей и сертификатов.

Используя Notepad++ в Windows и Tex-Edit Plus в OSX для определения скрытых символов, я обнаружил, что в конце файла были дополнительные [cr].

Используя команду

openssl rsa -in <private key file> -noout -text
openssl x509 -in <cert file> -noout -text

Хороши ли проверки на достоверность файлов?

Так как моим источником были строки в кодировке base64, я использовал команду certutil в Windows(т.е.)

certutil -f -decode cert.enc cert.pem
certutil -f -decode key.enc cert.key

на окнах для генерации файлов. Как только файлы были правильными, команда OpenSSL выше работала как ожидалось.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .