openssl: как конвертировать pfx в pem в скрипте - PullRequest
1 голос
/ 15 марта 2019

Я могу успешно конвертировать pfx в pem, если я запускаю openssl pkcs12 -in cert.pfx -out cert.pem -password pass:mypass.Однако мне будет предложено ввести кодовую фразу PEM, чтобы закрытый ключ был зашифрован в файле .pem.

Но как в скрипте автоматически ввести пароль PEM?Я попытался использовать аргумент -passin, но он не имел никакого эффекта.

Я предполагаю, что если я соединю сертификат PEM и ключ PEM по отдельности (не из pfx), это будет эквивалентно преобразованию из pfx в pem, но файл PEM, который приходит из PFX, содержит эти атрибуты Bag вне строки base64, и я не знаю, имеет ли это значение.

Итак, как мне правильно «создать» файл PEM,с зашифрованным закрытым ключом, без запроса парольных фраз?

1 Ответ

1 голос
/ 15 марта 2019

Если вы посмотрите документацию openssl pkcs12 , вы увидите:

-passin arg

Пароль файла PKCS # 12 (то есть входного файла)источник.Для получения дополнительной информации о формате arg см. Раздел «PASS PHRASE ARGUMENTS» в openssl (1).

-passout arg

Источник парольной фразы для шифрования любых выведенных закрытых ключей с помощью.Для получения дополнительной информации о формате arg см. Раздел «PASS PHRASE ARGUMENTS» в openssl (1).

, который указывает на:

Pass Phrase Options

Несколько команд принимают аргументы пароля, обычно используя -passin и -passout для паролей ввода и вывода соответственно.Это позволяет получить пароль из разных источников.Обе эти опции принимают один аргумент, формат которого описан ниже.Если аргумент пароля не задан и пароль требуется, то пользователю предлагается ввести его: он обычно будет считываться с текущего терминала с отключенным эхом.

Обратите внимание, что кодировка символов может иметь значение, см.кодировка фразы (7).

пароль: пароль

Фактический пароль - пароль.Поскольку пароль виден утилитам (например, «ps» в Unix), эту форму следует использовать только там, где безопасность не важна.env: var

Получить пароль из переменной окружения var.Поскольку окружение других процессов видно на определенных платформах (например, ps в определенных ОС Unix), этот параметр следует использовать с осторожностью.file: pathname

Первая строка pathname - это пароль.Если один и тот же аргумент pathname указан для аргументов -passin и -passout, то первая строка будет использоваться для входного пароля, а следующая строка для выходного пароля.путь не должен ссылаться на обычный файл: он может, например, ссылаться на устройство или именованный канал.fd: number

Считать пароль из номера дескриптора файла.Это может использоваться, например, для отправки данных по каналу.stdin

Считать пароль из стандартного ввода.

Таким образом, чтобы сложить все это вместе, вы можете сделать:

openssl pkcs12 -in cert.pfx -out cert.pem -passin pass:mypass -passout: pass:mypass

Относительно того, почему -password неработать для вас:

-password arg

С -export -password эквивалентен -passout.В противном случае -password эквивалентен -passin.

Таким образом, поскольку вы не используете "-export", он действует так же, как опция "-passin".Из-за этого поведения я предпочитаю явно использовать «-passin» и «-passout».

...