从Node.js中的SSL证书获取公钥

时间:2017-12-04 21:50:43

标签: node.js ssl pem

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

有没有办法在Node中轻松完成这项工作?

1 个答案:

答案 0 :(得分:0)

我最终使用上面提到的包get-ssl-certificate来从auth服务器获取信息。它返回一个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提交给了库,希望它很快就会作为库的一部分包含在内。与此同时,这就是我们正在使用的,而且运作良好。