我正在将nodejs用于服务器的TLS 1.2请求,这需要客户端身份验证。这意味着,在初始握手期间,客户端已经在客户端和服务器之间协商的随机值上签署了哈希值。
在nodejs中,您必须提供(例如RSA)密钥或.pfx / .p12文件以及带有请求的相应密码短语:
var https = require('https'), fs = require('fs')
var options = {
host: url, path: func, method: 'POST',
pfx: fs.readFileSync('mycert.pfx'),
passphrase: 'mysecret',
secureProtocol: 'TLSv1_2_method'
}
var req = https.request(options, function (res) {
...
事实上,您正在分发您的签名基础设施,而不仅仅是签署一个项目。
客户不希望这样,他们坚持使用Windows证书存储区进行签名,或者甚至更好地使用硬件令牌(智能卡,HSM)或管理和创建协议签名的远程密钥保管库。
为此,我需要在完成基本TLS握手时进行“签名”回调。
我已经看到,nodejs使用的是SecureContext对象,该对象由TLS.createSecureContext()创建。是否可以通过您自己的实现替换此对象?它的功能界面是什么?有人已经这样做了吗?
还有其他想法吗?