PKIjs生成S/MIME无法用OpenSSL解密的问题排查
问题:PKIjs生成的S/MIME加密内容无法用OpenSSL解密
最近我在用PKIjs生成S/MIME加密内容后,尝试用OpenSSL解密时碰了壁。先是发现官方示例生成的邮件头存在换行问题,复制后得手动修正才能符合邮件规范。另外我注意到PKIjs和OpenSSL输出内容末尾的"A"有差异,怀疑是填充方式不同,但找了半天也没找到修改S/MIME填充的方法。试过用OpenSSL的-stream开关调整填充,效果却不符合预期。
测试用证书与私钥
-----BEGIN CERTIFICATE----- MIIC0zCCAb2gAwIBAgIBATALBgkqhkiG9w0BAQswHjEcMAkGA1UEBhMCUlUwDwYD VQQDHggAVABlAHMAdDAeFw0xNjAyMDEwNTAwMDBaFw0xOTAyMDEwNTAwMDBaMB4x HDAJBgNVBAYTAlJVMA8GA1UEAx4IAFQAZQBzAHQwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDdZqM9YUi5NLmuYwJGZ7AIjFttRNop/m0AgLemdzn5+99X cM5fdljRehv4Fnwr6s8KVn86k63LeHaj7v760ZpzudpFWoT8uEbTmUQbixniBg4I BVIuB7NRVqR+ee8KjVKQqnRsjGDRBmq+H1s5IKmIrYYxS+jYx5bE702hDniy6/yO N75ABMaiQA0cKkTkvIeCfisMSFhZBasuyDfvbF+Wra4sPPU7Nrt10BJLBDaba84f tS/fKCqcn8GiZ96evhW/2b2YiV9GLAdBblr+HKydTEfizWZluRasQI2tVMgSx2Qb 6R+/QsKene/IV8pkp+hgm1SXIJ+JLIyYOifCLJ5LAgMBAAGjIDAeMA8GA1UdEwQI MAYBAf8CAQMwCwYDVR0PBAQDAgAGMAsGCSqGSIb3DQEBCwOCAQEAEnbp8gEOIHXr QJ/eGJ2C1nP3MaUYNomR96mrQVvr8nddqYBro5Pm441xqmFMbnEmlDzkgLFz8qeH qgAVD5YIlzAboJRGIUM0gX4L+dThrwvAvMlYXNCc77hE6WXJqboOKI7pmnfhu9Iy fuZE/njX93ywVNPiAAZ/qnvX3rJUBv6U05vHnu9P8FCqdrd7M4wxo3s7cOguvgMI CUepOyzWYgtbqlFOBtVl/TbeY2KNzMUhD+NpNs5VGci9OH06icJQIfYA4Lm0uaMd KUFH1hkdoJdMZ/nbAYBOL2BAQJOh52ELSgPz6KGNvDMMU7z1BQNE8zHbyXWwIcJG iwAY4ZS5gA== -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdZqM9YUi5NLmu YwJGZ7AIjFttRNop/m0AgLemdzn5+99XcM5fdljRehv4Fnwr6s8KVn86k63LeHaj 7v760ZpzudpFWoT8uEbTmUQbixniBg4IBVIuB7NRVqR+ee8KjVKQqnRsjGDRBmq+ H1s5IKmIrYYxS+jYx5bE702hDniy6/yON75ABMaiQA0cKkTkvIeCfisMSFhZBasu yDfvbF+Wra4sPPU7Nrt10BJLBDaba84ftS/fKCqcn8GiZ96evhW/2b2YiV9GLAdB blr+HKydTEfizWZluRasQI2tVMgSx2Qb6R+/QsKene/IV8pkp+hgm1SXIJ+JLIyY OifCLJ5LAgMBAAECggEARAzJjNKrhx2BGuwcpWY2UZJOganhgnnMqBRoHjbUL5Vu otIt5GKcTxqAoULL/LWp2GwYo/kDOKB4ms+ZOJ+XIQ3VXG7DpGfBgUVBDVQ2auXg hy+XgEVmpNAENEmnIu+oGoYBzeFh2q1lvrUllUwIP9XSArHpykOigDprel7X02op 1wlIdXmEECMlFOL160l9E+KrJQ1OHarO98VkCXkMSvnjpOCwkva3d2F/ty/STt+l +Hh8xJkkXrIcY1N1+NcJaWDtBnbA6/vRtqtnnsA3uCraXMfz5NMnkAYFJEYTraWs AujbPmiQtl41/QARvBsPW2CsznUnIwupf4WJFFSakQKBgQD4HjdV2/mmJqf40wDs ufC2eKndpQEXchRlvV7/sJQ61Rns9qRW9b1V+PvLR5/63WIFMFhxTakYozoZNlHt 6g+C5BCung21rbIjtGPMBO9ef0NqnH6+jEuIYgabP8qeJxjVvMJjDoANVOQbZApx cK06QdFgYDsdzc57TYbSABwVOwKBgQDkbyYGoz6l31/qjLVT/ttKj8ovjdGF9lCS rGg5eT8gRqe7QHu+k0Lbgbw5iH8wVw2K1pZEkAk3JkjttiKyNNTF7hNPnEtjtpLq l34kN6Lx1W9CRrdeInpEHNk2NOTMGe//h6mPRawUHZu0inQJViHKwQd5mR36KHml JnEdS2TKMQKBgQDcyZaYEo1OqqtiIfF6teNbnHgbwY79HAjGmAMHKExfJe5SDRAk SbxX2p3FQFE93O4yi9jHykGkqOs0MEAro9J1uRiXKhItDwmr+AOuMt4Gityk6+ll ClbUX9ZdJCDbJxNUbwnTN73/HwF01krss0WSx6rXRgqU9OS+mDhWer6CrQKBgQCE rMm5MTdBv+tFn1Px5SQYuksEM6pt1BIYHmqqdvFjHaZt65XzqjQ6qa9Y+x5kRSto aBn+2GmBzoqtBgxA1M5/5zbwFibzUychebuZ7XaGXyCvrcLyubOpu9es1CvPH4F1 OKYSwLShOlElGwUqJwyZZmOhDH2MvdVpRlqMWS3BAQKBgQCDvoAQsQLfHxo5HJJS JtJ8u74ovseWtgQ69fSdvNSvltPywqnf4B2/3pNIqiHwKRE37Pkud9jrSkGwmwVy I6jRv2D1e/pZoJ4D02t9SJyR5mlcYi4o7aS55zc+vmmCxbkjEW2URSIAzN9Na+1H jWJB9zp+KqVdmEMJ0mEAGkS15A== -----END PRIVATE KEY-----
测试文本
Test message.
PKIjs输出的加密内容
Content-Type: application/pkcs7-mime; name=smime.p7m; smime-type=enveloped-data Content-Description: Enveloped Data Content-Disposition: attachment; filename=smime.p7m Content-Transfer-Encoding: base64 From: sender@example.com To: recipient@example.com Subject: Example S/MIME encrypted message Date: Tue, 15 May 2018 17:00:32 +0000 Message-Id: <1526403632814-3b7a2ea4-7320c042-592c9bb6@example.com> MIME-Version: 1.0 MIIBzAYJKoZIhvcNAQcDoIIBvTCCAbkCAQIxggFuMIIBagIBADAjMB4xHDAJBgNVBAYTAlJVMA8G A1UEAx4IAFQAZQBzAHQCAQEwPAYJKoZIhvcNAQEHMC+gDzANBglghkgBZQMEAgMFAKEcMBoGCSqG SIb3DQEBCDANBglghkgBZQMEAgMFAASCAQBl6V6YXtfHy311tnekTnpL+3c+jCYTc0sd0zU66qrH Twnc+HsyYmELgiNhJflIeqnJmzDNr2h0kGCOjCkk5P3qQJf7Bg5iwL9nSgoNCZ3mstem4Htw2eTE 3CxxlnThL3MMG59N9rzod6PAx8LMCNC//G9c4oFttaBVeoF4ajYCc2eD86jQeq6lfKr/G3jzv3Kh eASvTjfnr+lMdCfEl5vQf1F+ze5HLv1WTSJTU3Pg6yCy7m7f5qD8t6f4zeuCZpXHtBgkEvnAGP8F TksSkMdXlBWTc4p1oU6qpZZZ8CIbRi0Te3CB/Xv7hJ2FYMXJeER8vHGuUjg9Lh7mW59ljESKMIAG CSqGSIb3DQEHATAdBglghkgBZQMEAQIEEKg1Uq+ZtYZOsznseHSCoCiggAQQZcFd4TBnsu8jujXB 7cNEfQAAAAA=
解密操作与错误信息
我修正了首行使其符合邮件规范后,执行以下OpenSSL命令尝试解密:
openssl smime -decrypt -inkey privkey.pem -in smime2.txt
结果解密失败,报错信息如下:
Error decrypting PKCS#7 structure
140101493268928:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:599:
内容的提问来源于stack exchange,提问作者D Koolhoven
相关产品推荐
相关产品推荐

