在 nodeJS 中解析 X509 证书包
Parsing X509 Certificate Bundles in nodeJS
我正在尝试解析一个 x509 证书包,它是一个由以下格式的多个证书组成的 pem 文件:
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
我可以像这样使用 jsrsasign X509 库读取和解析单个证书 pem 文件:
import r from "jsrsasign";
const cert = new r.X509();
cert.readCertPEM(input);
issuer = cert.getIssuerString();
我需要以类似的方式解析证书包。我该怎么做 ?我正在使用节点。
我尝试使用正则表达式将单个证书提取为字符串并将其循环传递给 cert.readCertPEM(input) 。但是我无法找出合适的 RE 来这样做。
如果使用 RE 是可行的方法,那么请问我该怎么做。
谢谢。
您可以匹配开始证书部分,然后使用否定先行 (?!-----)
捕获匹配所有不以 -----
开头的行的组,然后匹配结束证书部分。
^-----BEGIN CERTIFICATE-----\r?\n((?:(?!-----).*\r?\n)*)-----END CERTIFICATE-----
const regex = /^-----BEGIN CERTIFICATE-----\r?\n((?:(?!-----).*\r?\n)*)-----END CERTIFICATE-----/gm;
const str = `-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
xxxx
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
}
我正在尝试解析一个 x509 证书包,它是一个由以下格式的多个证书组成的 pem 文件:
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
我可以像这样使用 jsrsasign X509 库读取和解析单个证书 pem 文件:
import r from "jsrsasign";
const cert = new r.X509();
cert.readCertPEM(input);
issuer = cert.getIssuerString();
我需要以类似的方式解析证书包。我该怎么做 ?我正在使用节点。 我尝试使用正则表达式将单个证书提取为字符串并将其循环传递给 cert.readCertPEM(input) 。但是我无法找出合适的 RE 来这样做。 如果使用 RE 是可行的方法,那么请问我该怎么做。
谢谢。
您可以匹配开始证书部分,然后使用否定先行 (?!-----)
捕获匹配所有不以 -----
开头的行的组,然后匹配结束证书部分。
^-----BEGIN CERTIFICATE-----\r?\n((?:(?!-----).*\r?\n)*)-----END CERTIFICATE-----
const regex = /^-----BEGIN CERTIFICATE-----\r?\n((?:(?!-----).*\r?\n)*)-----END CERTIFICATE-----/gm;
const str = `-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
xxxx
xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
}