Я пытаюсь создать узел 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 все примеры используют закрытый ключ. У меня нет закрытого ключа, но у меня есть доступ к хранилищу сертификатов машины. Могу ли я использовать сертификат из магазина без закрытого ключа? Кажется, мне не хватает части.
Спасибо