如何在Go中从x509证书公钥中获取字符串?

时间:2019-05-10 09:09:21

标签: go base64 x509certificate x509

如果我有一个*x509.Certificate对象,如何从中提取公钥base64字符串表示形式?

1 个答案:

答案 0 :(得分:2)

注意:如果您已有x509.Certificate对象,请跳至#3


您需要执行以下操作:

  1. 使用related lookups对PEM进行解码。
block, _ := pem.Decode([]byte(certPEM))
  1. 使用pem.Decode()解析证书。
cert, _ := x509.ParseCertificate(block.Bytes)
  1. x509.ParseCertificate()封存公钥。
publicKeyDer, _ := x509.MarshalPKIXPublicKey(cert.PublicKey)
  1. 使用x509.MarshalPKIXPublicKey()将其编码为PEM编码的结构。
publicKeyBlock := pem.Block{
    Type:  "PUBLIC KEY",
    Bytes: publicKeyDer,
}
publicKeyPem := string(pem.EncodeToMemory(&publicKeyBlock))

pem.EncodeToMemory()上运行它


如果使用以下命令将示例中的证书复制到文件cert.pem,则可以确认结果:

openssl x509 -inform pem -in cert.pem -pubkey -noout

您应该得到相同的结果!