我有一个要解密的 .p7m 文件。它是用我的 ca.pem 文件加密的。我有 ca.crt、ca.pem 和 ca.key
我尝试了几种方法来解密,例如:
openssl smime -verify -in file.p7m -inform der -noverify -signer ca.pem -out textdata
但它们都不起作用。
我设法从收到的加密电子邮件中提取了一些信息:
openssl smime -decrypt -in email.eml -inkey ca.key > mail.txt
并得到 base64 原始数据
--===============3728737985443050612==
Content-Type: application/octet-stream; Name="mails.p7"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mails.p7"
RnJvbTogdHJ1bHlfk3j4h5g6kl34g6kk45hl6kb3VzQHlvdXdvbnRmaW5kbWUub3JnClRvOiBwZXRzLXR1d0BhcHBz
ZWMuYXQKU3ViamVjdDogSnVzdCBzbyB5b3Uga25vdwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0ic21pbWUucDdtIgpDb250ZW50LVR5
cGU6IGFwcGxpY2F0aW9uL3gtcGtjczctbWltZTsgc21pbWUtdHlwZT1lbnZlbG9wZWQtZGF0YTsg
bmFtZT0ic21pbWUucDdtIgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKCk1JSUJt
Z1lKS29aSWh2Y05BUWNEb0lJQml6Q0NBWWNDQVFBeGdnRkNNSUlCUGdJQkFEQ0JwakNCbURFTE1B
a0cKQTFVRUJoTUNjkherltkhjelrk4q4235qwtefsdCQWdNQmxacFpXNXVZVEVQTUEwR0ExVUVCd3dHVm1sbGJt
NWhNUkF3RGdZRApWUVFLREFkVVZTQlhhV1Z1TVJVd0V3WURWUVFMREF4VFFrRWdVbVZ6WldGeVky
Z3hHVEFYQmdOVkJBTU1FRUZzClpYaGhibVJsY2lCU1lYTm9aV1F4SXpBaEJna3Foa2lHOXcwQkNR
RVsdafsdasdqwe54q34512345xd2JHVkFertsergslkj34l5kj2h34lk5GMEFna0E2b1FQNjBVSkl4QXdEUVlKS29aSWh2
Y05BUUVCQlFBRWdZQ1ZiMGwybU83ek9NamhvbktaV3BMNwpoYks5dGI3aEVEVXhuWjNUM2wvWWVl
UExXTkw2VHI0cE50Zjh6L0ZxOUtvTWxnVzZzQ0dWVU5GbGxDemVzZXBhCkhLTHp4Q1RFWHl4bzRB
bStxeXVuVHFpMUVuWGJ3Tzg0YmtDeGVEUEhKU3M2bzhHVzRSdlErSG9yNFJ1Ydfgsdfgsdf
ZldnN29vRkZuUUZCRnZWREE4QmdrcWhraUc5dzBCQndFd0hRWUpZSVpJQVdVREJBRXFCQkNNNm5o3345345dsgfdfgsed0JCT1NFNGNjdXgxUVRXY0VEb1dWeVVZCgo=
--===============3728737985443050612==--
然后我尝试:
openssl enc -d -base64 -in base64.raw -out result.txt
但这也不起作用。
我究竟做错了什么?
答案1
为了解密加密的电子邮件,openssl smime -decrypt
应该是正确的方法。但是,首先,openssl smime
需要将 mime 消息作为输入,而不仅仅是 p7m 附件。另外,要解密,您需要指定收件人的私钥。这应该有效:
openssl smime -decrypt -in email.eml -recip recipient.pem
email.eml
是保存的 ASCII 文本格式的电子邮件,recipent.pem 是 PEM 格式的私钥。请注意,PEM 格式与它是公钥还是私钥/证书无关。在您的问题中,尚不清楚您的文件采用哪种格式ca.key
,但私钥通常以 PKCS12 文件格式存储。要将 PKCS12 格式(p12 或 pfx 文件后缀)转换为 PEM,您可以使用
openssl pkcs12 -in recipient.p12 -out recipient.pem