即使“验证”成功,也无法使用 OpenSSL 进行 S/MIME 签名

即使“验证”成功,也无法使用 OpenSSL 进行 S/MIME 签名

我在 Chrome 中有一个客户端证书,用于登录 StartSSL。我使用 将其导出pk12utilcertfile.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

-nodes在制作时忘记了标志pem。这包括私钥。

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

pem可以用于签名。

相关内容