Как я могу проверить действительность сертификата в файле p12 в javascript? - PullRequest
0 голосов
/ 23 апреля 2020

Я разрабатываю приложение, в котором мне нужно будет проверить, есть ли в загруженных файлах p12 сертификаты, выданные доверенными центрами сертификации. Я пытаюсь найти программный c способ сделать это в javascript, хотя если это невозможно в js, я могу использовать другой язык.

Я не знаю, что это будет наиболее подходящим инструмент для этого, но я использую библиотеку узла forge и имею следующее:

const p12 = fs.readFileSync(PATH_TO_PDF_P12_CERTIFICATE, 'binary');
const p12Asn1 = forge.asn1.fromDer(p12, false);
const p12Parsed = forge.pkcs12.pkcs12FromAsn1(p12Asn1, false, 'password');
const bags = p12Parsed.getBags({bagType: forge.pki.oids.certBag});

const caStore = forge.pki.createCaStore();

forge.pki.verifyCertificateChain(caStore, [Object.values(bags)[0][0].cert]);

Однако, похоже, у меня в caStore нет сертификатов по умолчанию, и я не знаю, как его получить чтобы проверить уже установленные на моей машине.

1 Ответ

0 голосов
/ 23 апреля 2020

Попробуйте:

npm установить p12-pem --save

import * как p12 из 'p12-pem';

/ ** * Дано файл p12, преобразовать его в формат PEM. * @param {string} pathToCert Относительный путь к файлу p12. * @param {string} пароль p12 / закрытый ключ. * / const {pemKey, pemCertificate, commonName} = p12.getPemFromP12 (certPath, пароль); console.log ('Преобразованный закрытый ключ в PEM:'); console.log (pemKey);

console.log ('Преобразованный сертификат в PEM:'); console.log (pemCertificate)

console.log ('Извлеченное общее имя:'); console.log (commonName);

Источник (ы): https://www.npmjs.com/package/p12-pem (AND> ..) https://nodejs.org/en/about/releases/

...