我正在尝试创建节点https服务器。这个想法是服务器将在商店中接收证书的指纹,将其从商店中取出并用于SSL / TLS连接。我已经为自签名证书制作了示例,并且效果很好。 我有代码可以查看证书存储区并根据其指纹找到正确的证书
我到目前为止的代码如下。
const ca = require('win-ca');
const forge = require('node-forge');
const pki = forge.pki;
const ssh = forge.ssh;
const thumbprint = process.env.THUMBPRINT;
...
for (let cert of ca.all()) {
console.log(forge.pki.certificateToPem(cert));
console.log(' ----------- \r');
const md = forge.md.sha1.create();
md.update(forge.asn1.toDer(forge.pki.certificateToAsn1(cert)).getBytes());
const hex = md.digest().toHex();
console.log(hex);
console.log('\r');
if (thumbprint === hex) {
foundCert = cert;
console.log('found\r');
break;
}
}
console.log('**********************');
console.log('\r');
//}
cnt++;
}
if (foundCert) {
console.log(forge.pki.certificateToPem(foundCert));
const pm = forge.pki.certificateToPem(foundCert);
console.log(foundCert);
}
在Windows ASP.NET Core中,仅需要https的证书。对于node.js,所有示例都使用私钥。我没有私钥,但是可以访问机器的证书存储。我可以在没有私钥的情况下使用商店中的证书吗?我似乎缺少了一块。
谢谢