Не может подписать S / MIME с использованием OpenSSL, даже если «верифицировать» успешно

3780
Janus Troelsen

У меня есть сертификат клиента в Chrome, который я использовал для входа в StartSSL. Я экспортировал его помощью pk12utilв certfile.p12. Теперь я хочу использовать его для подписи с S / MIME.

Я преобразовал p12файл в pem.

Сначала я проверяю, что сертификат будет работать для этой цели:

$ openssl verify -purpose smimesign -verbose -CAfile ca-bundle.crt certfile.pem certfile.pem: OK 

Теперь я пытаюсь подписать:

$ echo "lol" | openssl smime -sign -CAfile ca-bundle.crt -signer certfile.pem unable to load signing key file 3074062600:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY 

Если я использую оригинальный p12файл, он тоже не работает, но с другим сообщением об ошибке:

$ openssl verify -purpose smimesign -verbose -CAfile ca-bundle.crt certfile.p12 unable to load certificate 3074066696:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE 

Что я должен сделать, чтобы я мог подписывать сообщения с бесплатными сертификатами StartSSL?

1
`cat` файл` certfile.pem`. Он должен иметь `----- НАЧАТЬ СЕРТИФИКАТ -----` и друзей. Кроме того, `openssl smime -sign` * может * не * нуждаться в` -CAfile ca-bundle.crt`, поскольку вы * не * проверяете подпись. jww 10 лет назад 0

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

3
Janus Troelsen

I forgot the -nodes flag when making the pem. This includes the private key.

openssl pkcs12 -in certfile.p12 -nodes -out certfile2.pem 

This pemcan be used for signing.

Вы, вероятно, должны пометить свой ответ как принятый, чтобы другие знали, что это было исправлением. jww 10 лет назад 0