我想加密客户端和Web应用程序上的数据从用户本地计算机获取.cer文件。拍摄后我将使用密钥加密数据,但我想要库或以任何方式读取我在互联网上搜索的.cer文件,我找不到任何库。我使用公钥加密。
答案 0 :(得分:2)
很难理解为什么您想要读取这些密钥但是根据您要实现的目标,您可以使用Client-authenticated TLS handshake并且浏览器会负责处理密钥为了你。如果您只需要在传输过程中加密某些数据,那么即使Simple TLS handshake也可能就足够了。阅读JavaScript Cryptography Considered Harmful并确保您没有尝试重新制作已经以更标准方式运作的内容。
答案 1 :(得分:1)
出于浏览器安全原因,浏览器中的Javascript无法访问本地用户计算机上的.cer
文件(或任何文件)。密钥(用于单个网站)可以存储在本地存储中,也可以从那里访问。
您可能想重新考虑一下您真正想要做的事情。如果您使用https与服务器通信,并且您的服务器具有适当的配置和安全凭据,则浏览器和服务器之间的通信将在传输过程中自动受到公钥/私钥加密保护。
答案 2 :(得分:0)
为此,您需要打破用户浏览器的沙箱。执行此操作的“常规”方法是创建签名的小程序。用户需要在其计算机上正确配置Java,并且需要验证签名的applet是否可以运行。然后,这个Applet可以使用它的文件读取权限来访问用户计算机上的文件,JavaScript可以使用applet读取证书(并执行加密)。
现在,虽然原则上这是可能的,但我确实,真的,真的, 真的 建议你不要这样走。这个建议来自那些实施了这样一个解决方案的人,并且非常确定其他项目不会使用相同的解决方案。
您应该使用TLS,可能与其他人建议的客户端身份验证一样。如果需要,您可以始终通过受信任的TLS传输发送公钥,并让您的JavaScript使用该密钥加密数据。通常,虽然配置良好的TLS连接应该足够了。