如何从nodejs中解析的x509证书中获取公钥长度



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('rn');
let derData = forge.util.decode64(certificateContent);
let cert = forge.pki.certificateFromAsn1(forge.asn1.fromDer(derData));

您可以使用伪造公开的方便的certificateFromPem函数从certificate.pem文件中获得模数长度(n(,从而获得公钥长度。

我们还可以获得签名Object Id,我们可以在这里查找: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

最新更新