Невозможно передать сертификат и ключ в openssl через стандартный ввод - PullRequest
0 голосов
/ 01 февраля 2019

Я выполнил шаги , перечисленные здесь , чтобы создать новый закрытый ключ и сертификат.Теперь я пытаюсь объединить их в файл .pfx.

OpenSSL должен иметь возможность читать как закрытый ключ, так и сертификат из одного файла, и, согласно man man docs, также должен бытьумеет читать с stdin.Однако, похоже, это не работает для меня.

В Mac OS X 10.14.3 и openssl version выдает "LibreSSL 2.6.5".

Я объединил свой сертификат и ключв один файл (называемый «комбинированный.pem»).Я сделал это с помощью следующих команд:

$ openssl genrsa -out private.key 2048
$ openssl req -new -x509 -key private.key -out public.cer -days 365
$ cat public.cer >> combined.pem
$ cat private.key >> combined.pem

Для справки combined.pem выглядит примерно так:

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

Когда я запускаю следующую команду, все работает нормально:

$ openssl pkcs12 -export -out x509.pfx -in combined.pem

Когда я запускаю эту команду, я получаю сообщение об ошибке:

$ openssl pkcs12 -export -out x509.pfx < combined.pem
unable to load certificates

Я также пытался:

$ cat combined.pem | openssl pkcs12 -export -out x509.pfx
unable to load certificates

Чего мне не хватает?Разве OpenSSL не может читать из stdin для этого?

Также из man документов:

     -in file
           The input file to read from, or standard input if not specified.  The order doesn't matter but one private key and its corresponding certificate should
           be present.  If additional certificates are present, they will also be included in the PKCS#12 file.

     -inkey file
           File to read a private key from.  If not present, a private key must be present in the input file.

Ответы [ 2 ]

0 голосов
/ 13 августа 2019

Некоторые утилиты командной строки ожидают тире при использовании стандартного ввода;openssl x509, по-видимому, следует этому (проверено на Ubuntu 18.04, поэтому я разумно ожидал, что это будет переносимый синтаксис).

cat combined.pem | openssl pkcs12 -export -out x509.pfx -in -
0 голосов
/ 28 февраля 2019

Из того, что я взял из этого вопроса OpenSSL действительно не работает со стандартным вводом из коробки.Однако вы можете попробовать кое-что обмануть:

openssl pkcs12 -export -out x509.pfx -in /dev/stdin < combined.pem

Я не проверял ваш конкретный случай комбинации сертификатов, но часть перенаправления /dev/stdin должна работать, чтобы у вас был "stdin-лайк "возможности в OpenSSL

...