【发布时间】:2019-05-10 09:09:20
【问题描述】:
如果我有一个*x509.Certificate 对象,如何从中提取公钥 base64 字符串表示形式?
【问题讨论】:
标签: go base64 x509certificate x509
如果我有一个*x509.Certificate 对象,如何从中提取公钥 base64 字符串表示形式?
【问题讨论】:
标签: go base64 x509certificate x509
注意:如果您已经拥有 x509.Certificate 对象,请跳转到 #3。
您需要执行以下操作:
pem.Decode() 解码 PEM。block, _ := pem.Decode([]byte(certPEM))
x509.ParseCertificate()解析证书。cert, _ := x509.ParseCertificate(block.Bytes)
x509.MarshalPKIXPublicKey() 封送公钥。publicKeyDer, _ := x509.MarshalPKIXPublicKey(cert.PublicKey)
pem.EncodeToMemory() 将其编码为 PEM 编码结构。publicKeyBlock := pem.Block{
Type: "PUBLIC KEY",
Bytes: publicKeyDer,
}
publicKeyPem := string(pem.EncodeToMemory(&publicKeyBlock))
在Go Playground上运行它
如果您将示例中的证书复制到文件cert.pem,您可以使用以下命令确认结果:
openssl x509 -inform pem -in cert.pem -pubkey -noout
你应该得到同样的结果!
【讨论】: