【问题标题】:Get Public Key from SSL Certificate in Node.js从 Node.js 中的 SSL 证书获取公钥
【发布时间】:2017-12-04 21:50:42
【问题描述】:

我正在使用get-ssl-certificate 从身份验证服务器获取 SSL 证书。它可以工作,并带回一个 JSON 对象,其中包含来自我们的身份验证服务器的信息。但我需要一个 PEM 编码的公钥字符串来完成我的授权。不过,我不知道如何将我得到的对象转换为正确的格式。

有什么方法可以在 Node 中轻松做到这一点?

【问题讨论】:

  • 你有什么收获吗?
  • @ashic 是的,我刚刚添加了一个您现在可以看到的答案。

标签: node.js ssl pem


【解决方案1】:

我最终使用了上面提到的包get-ssl-certificate,从身份验证服务器获取信息。它带有raw 属性,我将其转换为base64 字符串,然后进行格式化。这是我所做的:

if (certificate.raw) {
    certificate.pemEncoded = pemEncode(certificate.raw.toString('base64'), 64);
}
...

// pemEncode function:

function pemEncode(str, n) {
    const ret = [];

    for (let i = 1; i <= str.length; i++) {
        ret.push(str[i - 1]);
        const mod = i % n;

        if (mod === 0) {
        ret.push('\n');
        }
    }
    const returnString = `-----BEGIN CERTIFICATE-----
    ${ret.join('')}-----END CERTIFICATE-----`;
    return returnString;
}

这对我有用。我将此代码作为 PR 提交给了库,希望它很快会作为库的一部分包含在内。与此同时,这是我们正在使用的,并且运行良好。

【讨论】:

  • 如果我在 for 循环之后添加以下行,您的代码对我有效: if (ret[ret.length - 1] != '\n') { ret.push('\n' ); }
猜你喜欢
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2014-08-19
  • 2016-01-07
  • 1970-01-01
相关资源
最近更新 更多