NodeJS - Получить цепочку сертификатов из файла P7B
Я пытаюсь взять строку в кодировке CMS base64, преобразовать ее в файл pkcs7 и извлечь листовые и промежуточные сертификаты с помощью javascript/nodejs, аналогично следующей команде openssl:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Я прочитал почти каждую статью и вижу решения на других языках, но не для узла. Я понимаю, что вы можете достичь того, что мне нужно, с помощью node-forge, но node-forge не поддерживает алгоритмы ECC. Кто-нибудь знает какие-либо другие решения / пакеты npm, которые могут помочь мне в этом? Пожалуйста, помогите мне. Я очень новичок в этом.
1 ответ
Вы видели PKI.js для Node.js? Это чистая библиотека JavaScript, реализующая форматы, используемые в приложениях PKI. Он основан на W3C API веб-криптографии с полной поддержкой всех алгоритмов "Suite B" в сообщениях CMS. Фрагмент кода, представленный OP:
const cmsSignedBuffer = stringToArrayBuffer(fromBase64(token.signature));
const asn1 = asn1js.fromBER(cmsSignedBuffer);
const cmsContentSimpl = new pkijs.ContentInfo({ schema: asn1.result });
const cmsSignedSimpl = new pkijs.SignedData({ schema: cmsContentSimpl.content })
Другой подход заключается в использовании оболочки для openssl, например, openssl-nodejs. Оболочка просто порождает дочерний процесс для вызова openssl. Таким образом, openssl должен быть установлен в системе, где развернуто приложение Node.js.