如何从 x509 证书 public 键中获取字符串?

How to get a string out of x509 certificate public key in go?

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

注意:如果您已经拥有 x509.Certificate 对象,请跳转到 #3


您需要执行以下操作:

  1. 使用 pem.Decode() 解码 PEM。
block, _ := pem.Decode([]byte(certPEM))
  1. x509.ParseCertificate()解析证书。
cert, _ := x509.ParseCertificate(block.Bytes)
  1. x509.MarshalPKIXPublicKey() 封送 Public 键。
publicKeyDer, _ := x509.MarshalPKIXPublicKey(cert.PublicKey)
  1. 使用 pem.EncodeToMemory().
  2. 将其编码为 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

你应该得到相同的结果!