LINUX.ORG.RU

Сконвертировать PEM (cert+key) в PKCS12

 , , ,


0

2

Есть *.pem файл с подобным содержанием:

-----BEGIN CERTIFICATE-----
... Base64 ...
-----END CERTIFICATE-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
... Base64 ...
-----END ENCRYPTED PRIVATE KEY-----

Cконвертировать в PKCS12 из коммандной строки так:

  • Разбить на два файла (CERTIFICATE, ENCRYPTED PRIVATE KEY)
  • Использовать OpenSSL:
    openssl pkcs12 -export -in cert.pem -inkey key.pem -out result.p12
    
  • В процессе конвертации мне необходимо ввести 2 пароля: для PEM ключа и для PKCS12 файла (*.p12)

Надо автоматизировать весь процесс с помощью Perl скрипта. Хочется использовать уже готовые биндинги (Net::SSLeay, Crypt::OpenSSL::PKCS12). Подскажите пожалуйста как это лучше всего сделать?

Очень бы хотелось увидеть сниппеты на С или Perl.

А как ты это делаешь? Или ты даже не пытался сделать, а просто «дайте сниппеты» ? Дай зарплату тогда, чо.

peacelove ()

perl -0777 -lne 'BEGIN{$n=shift; $p=shift} m#^-----BEGIN CERTIFICATE-----.+?^-----END CERTIFICATE-----#sm && do { open F,«>/tmp/cert.pem»; print F $& }; m#^-----BEGIN \w+ PRIVATE KEY-----.+?^-----END \w+ PRIVATE KEY-----#sm && do { open F,«>/tmp/key.pem»; print F $& }; END{ system «openssl pkcs12 -export -in /tmp/cert.pem -inkey /tmp/key.pem -out $n -passout pass:$p» }'

arto ★★ ()
Ответ на: комментарий от peacelove

Я же написал как делаю, вручную. В принципе можно повторить эти действия в скрипте. Но это кажется костылями, когда есть библиотеки для работы с ssl. Но я как залез в документацию Net::SSLeay, так и не вылез.

С другой стороны нашёл метод create в Crypt::OpenSSL::PKCS12.

Предполагаю что кто-то на ЛОРе с этим уже сталкивался, вот и спрашиваю.

Дай зарплату тогда, чо.

Жадность — плохая черта.

KennyMinigun ★★★★★ ()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от KennyMinigun

Net::SSLeay

Нету там нужного тебе функционала и врядли будет.

Crypt::OpenSSL::PKCS12

Когда последний раз смотрел он был жутко не допилен. И чтобы допилить его надо изучать си + libssl :)

P.S. Могу дать вариант на форках :)

gh0stwizard ★★★★★ ()
Последнее исправление: gh0stwizard (всего исправлений: 1)

Не-не-не, чувак, ты не хочешь туда лезть. Там ад и ужас. Даже проект OpenCA, который УЦ на Perl вокруг OpenSSL, вызывает его из командной строки.

uuwaan ★★ ()
Ответ на: комментарий от gh0stwizard

И чтобы допилить его надо изучать си + libssl :)

Про время не стоит забывать :)

KennyMinigun ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.