我正在尝试解析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();
我需要以类似的方式解析证书捆绑。我该怎么做 ?我正在使用Nodejs。我尝试使用正则表达式将单个证书提取为字符串并将其循环传递到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]);
}