在nodeJS中解析X509证书包

问题描述 投票:0回答: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();

我需要以类似的方式解析证书捆绑。我该怎么做 ?我正在使用Nodejs。我尝试使用正则表达式将单个证书提取为字符串并将其循环传递到cert.readCertPEM(input)。但是我无法找到合适的RE。如果使用RE是必经之路,那么我能不能知道我该怎么做。

谢谢。

node.js regex parsing x509
1个回答
0
投票

您可以匹配开始证书部分,然后使用负前瞻-----捕获与所有不以(?!-----)开头的所有行匹配的组,然后匹配结束证书部分。

^-----BEGIN CERTIFICATE-----\r?\n((?:(?!-----).*\r?\n)*)-----END CERTIFICATE-----

Regex demo

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]);
}
© www.soinside.com 2019 - 2024. All rights reserved.