【发布时间】:2015-05-29 05:30:08
【问题描述】:
我目前正在尝试调整一些脚本,我们使用 OpenSSL 和 S/MIME 使用 Java 和 BouncyCastle 对加密/解密 xml 文件进行签名。
对我们的文件进行签名和加密的命令:
openssl smime -sign -signer Pub1.crt -inkey Priv.key -in foo.xml | openssl smime -encrypt -out foo.xml.smime Pub2.crt Pub1.crt
这会生成一个包含我们的 xml 文件的签名和加密的 smime 文件。目前,这发生在使用 OpenSSL 库的 linux 下的一组 shell 脚本中。将来我们希望将此过程集成到我们的 Java 应用程序中。
我发现使用 BouncyCastle 库应该可以做到这一点(请参阅 this post)。那里的答案提供了两个 Java 类,展示了如何使用 BouncyCastle 和 S/MIME 对电子邮件进行签名和加密。将此与我们的 OpenSSL 命令进行比较,我们的方法似乎不需要签署加密电子邮件所需的许多事情。
来自我们生成的文件的更多元信息:
签名文件
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----709621D94E0377688356FAAE5A2C1321"
加密文件
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64
是否可以像我们使用 OpenSSL 那样对简单文件进行签名和加密?我目前对签名和解密/加密的了解不是很高,所以请原谅我没有提供代码示例。我想我正在寻找的是对我需要做的事情的更多投入,也许是已经做过这件事的人的一些专业知识。我希望这是问这个问题的正确地方。如果不是,请纠正我。
【问题讨论】:
标签: java openssl bouncycastle encryption-asymmetric smime