Как получить длину открытого ключа из проанализированной сертификации x509 в nodejs - PullRequest
1 голос
/ 04 ноября 2019

Сертификация для новичков до x509. Работа с node-js и с наиболее (кажется, похожим) инструментом для создания и анализа сертификатов - node-forge . Я пытаюсь выяснить, как получить надежную длину открытого ключа и алгоритм хеширования подписи (SHA) из сертификата, который был создан на основе данных сертификата. Я получаю двоичный код из файла .cert и пытаюсь проанализировать его и получить вышеупомянутые данные. Смотрите мой основной код: (сертификат является объектом, представляющим сертификацию)

let certificateContent = file.replace('-----BEGIN CERTIFICATE-----', '').replace('-----END CERTIFICATE-----', '').trim();
certificateContent = Buffer.from(certificateContent.toString(), 'binary').toString('base64').toString().split(/(.{64})/).filter(x => x).join('\r\n');
let derData = forge.util.decode64(certificateContent);
let cert = forge.pki.certificateFromAsn1(forge.asn1.fromDer(derData));

1 Ответ

1 голос
/ 04 ноября 2019

Вы можете получить длину модуля (n) и, следовательно, длину открытого ключа из файла сертификата .pem, используя удобную функцию certificateFromPem, которую предоставляет forge.

Мы также можем получить идентификатор объекта подписи, который мыможно посмотреть здесь: http://www.oid -info.com / .

const forge = require('node-forge');
const fs = require('fs');

function getCertificatePublicKeyBitLength(pemFile) {
    const certificate = forge.pki.certificateFromPem(fs.readFileSync(pemFile));
    return certificate.publicKey.n.bitLength();
}
function getCertificateSignatureObjectId(pemFile) {
    const certificate = forge.pki.certificateFromPem(fs.readFileSync(pemFile));
    return certificate.signatureOid;
}

console.log("Bit length: ", getCertificatePublicKeyBitLength('cert.pem'));
console.log("Certificate Signature Object Id: ", getCertificateSignatureObjectId('cert.pem'));

Я проверил это, создав сертификаты, используя openssl, например, (ключ 4096 бит здесь):

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...