如何从 x509 证书 public 键中获取字符串?
How to get a string out of x509 certificate public key in go?
如果我有一个 *x509.Certificate
对象,我如何从中提取 public 键 base64 字符串表示形式?
注意:如果您已经拥有 x509.Certificate
对象,请跳转到 #3。
您需要执行以下操作:
- 使用
pem.Decode()
解码 PEM。
block, _ := pem.Decode([]byte(certPEM))
- 用
x509.ParseCertificate()
解析证书。
cert, _ := x509.ParseCertificate(block.Bytes)
- 用
x509.MarshalPKIXPublicKey()
封送 Public 键。
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
你应该得到相同的结果!
如果我有一个 *x509.Certificate
对象,我如何从中提取 public 键 base64 字符串表示形式?
注意:如果您已经拥有 x509.Certificate
对象,请跳转到 #3。
您需要执行以下操作:
- 使用
pem.Decode()
解码 PEM。
block, _ := pem.Decode([]byte(certPEM))
- 用
x509.ParseCertificate()
解析证书。
cert, _ := x509.ParseCertificate(block.Bytes)
- 用
x509.MarshalPKIXPublicKey()
封送 Public 键。
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
你应该得到相同的结果!