我正在寻找一种在客户端解密S / MIME电子邮件的方法。我特别不希望客户端与服务器共享私钥,因此需要找到一种方法让客户自己完成所有事情。
我不需要支持多个浏览器,因此使用像window.Crypto that currently works only with Mozilla Firefox这样的东西是完全没问题的。这尤其是因为客户端上的浏览器将以某种方式需要访问客户端计算机上的证书存储(为了访问私钥 - 当然需要用户批准)。
我只是迷失在哪里开始,因为几乎不可能找到任何关于做这样的事情的示例或教程,所以你可以分享的任何代码都会受到欢迎。
答案 0 :(得分:0)
我不熟悉SMIME.p7m文件,但听起来好像它们是pkcs7加密的。
你可能会对nodejs cryptojs module感到幸运,看起来它会支持pkcs7。
因为nodejs是JavaScript,如果它没有开箱即用,那将是一个很好的起点。
通常构建nodejs模块以支持nodejs和浏览器使用。
如果它不支持开箱即用的浏览器,<keygen>
html5 tag and it's related features(用于存储密钥等)可能会很有用。
答案 1 :(得分:0)
我们在此处使用Web Crypto在Javascript中加密/解密和签名/验证S / MIME邮件示例 - https://github.com/PeculiarVentures/pkijs-es6/tree/master/examples/
这种方法既适用于浏览器,也适用于节点,如果在节点上使用WebCrypto polyfill,例如 - https://github.com/PeculiarVentures/node-webcrypto-ossl