gpt4 book ai didi

javascript - 如何在javascript中使用证书的私钥对消息进行签名

转载 作者:行者123 更新时间:2023-12-02 22:23:38 25 4
gpt4 key购买 nike

我的本​​地驱动器上有 CNG/CAPi 证书。它是在 Windows 证书存储中导入的。我想从浏览器(例如 Chrome、IE 等)访问它。我如何使用 Javascript/Jquery/任何浏览器 API 使用 Windows 证书存储中证书的私钥对消息/随机数(由服务器提供)进行签名?有什么api可以引用吗?或者请让我知道我可以使用 JavaScript 签署消息的过程?我尝试过 WebCrypto Api,但没有成功。我需要从头开始构建它,因此我们将不胜感激。代码如下:

     var client = forge.tls.createConnection({
server: false,
caStore: { HOST: 'CN=ret512312.abc.xyz.net, O=xyz, S=ZG, C=CH' },
cipherSuites: [
forge.tls.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA,
forge.tls.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA
],
verify: function(connection, verified, depth, certs) {
debugger;
if (depth === 0) {
var cn = certs[0].subject.getField('CN').value;
if (cn !== 'example.com') {
verified = {
alert: forge.tls.Alert.Description.bad_certificate,
message: 'Certificate common name does not match hostname.'
};
}
}
},

最佳答案

对 WebCrypto API 的主要批评之一是它不提供对浏览器证书存储中信任点的访问。当然,它也不提供对整个系统信任点的访问(这会很糟糕)。因此,您必须突破浏览器的沙箱才能执行此任务。

可以通过以下方式突破沙箱:浏览器扩展,但请注意,这些扩展即将过时,因为并非每个(移动)浏览器都支持它们,并且您必须为每个浏览器单独对它们进行编程。以前,您需要签署小程序来执行此操作,但这些程序很久以前就已被废弃(如果您问我的话,是在 Sun/Oracle 完全管理不善之后)。

所以是的,不,抱歉。如果确实需要,最好设置一个受信任的网站,然后从那里恢复签名证书(但请注意,您无法获得比初始 TLS 连接提供的安全性更高的安全性)。

关于javascript - 如何在javascript中使用证书的私钥对消息进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59138475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com