Как расшифровать зашифрованную электронную почту S / MIME с помощью openssl smime?

2564
not2savvy

По какой-то причине я не могу найти ответ на этот основной вопрос. Я получил зашифрованное письмо S / MIME и хочу расшифровать его, используя openssl smime. Однако я предполагаю, что не могу предоставить ключ в правильном формате. Вот что я сделал:

  • Сохранено сообщение электронной почты (необработанный текстовый формат) как smime-ok.txt
  • Экспортировал мой ключ из цепочки для ключей OS X как myself.p12
  • Экспортировал мой открытый сертификат из цепочки для ключей OS X как myself.cer

Потом я попробовал

openssl smime -decrypt -in smime-ok.txt -recip myself.p12 

Но я получаю

unable to load certificate 37740:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE 

Я также попробовал -inkey myself.p12 -recip myself.cerи еще несколько вариантов, но это не имело значения. Я предполагаю, что мой ключевой файл не читается или не читается должным образом, потому что мне также не предлагается пароль.

Я подозреваю, что я могу в принципе неправильно понять, как использовать openssl smime.

3

1 ответ на вопрос

1
not2savvy

Фактически это тот случай, когда openssl smimeво -recipвходных данных ожидается формат PEM, но файл p12 имеет формат PKCS12. Вот как конвертировать p12файл в pemфайл:

openssl pkcs12 -in myself.p12 -out myself.pem 

После этого следующее расшифровывает письмо, как и ожидалось:

openssl smime -decrypt -in smime-ok.txt -recip myself.pem