使用node-forge从p12提取X509证书后如何转为Base64编码
实现方案
你拿到的certificate是node-forge封装的X509证书对象,只需按以下步骤处理即可得到符合要求的keyId:
- 将证书对象序列化为DER格式二进制流(也就是服务商要求的X509证书原始字节数组)
- 对DER二进制流做Base64编码
完整代码如下:
const p12Asn1 = forge.asn1.fromDer(keyFile) const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, passwordHash) const certificateBags = p12.getBags({ bagType: forge.pki.oids.certBag }) const certificate = certificateBags[forge.pki.oids.certBag][0].cert // 以下是新增的keyId生成逻辑 const certAsn1 = forge.pki.certificateToAsn1(certificate) const certDerBuffer = forge.asn1.toDer(certAsn1) const keyId = certDerBuffer.toB64()
说明
- 不要使用
forge.pki.certificateToPem这类方法生成PEM格式内容,PEM格式包含头尾标识和自动换行,和要求的原始证书字节编码不符 - 上述代码生成的
keyId是纯DER编码的Base64结果,没有额外字符,完全匹配API要求
内容的提问来源于stack exchange,提问作者Geraint Anderson
相关产品推荐
相关产品推荐

