【发布时间】:2016-04-15 13:45:55
【问题描述】:
我正在寻找一个简单的示例,用于在 go 中解析 X.509 PEM 并将值转储到标准输出。任何人都可以提供一个例子吗?
【问题讨论】:
我正在寻找一个简单的示例,用于在 go 中解析 X.509 PEM 并将值转储到标准输出。任何人都可以提供一个例子吗?
【问题讨论】:
您想使用 encoding.pem 解码 pem 文件,这将为您提供可以使用 crypto/x509 包解码的 DER 块。
例如:
certPEMBlock, err := ioutil.ReadFile(certFile)
if err != nil {
log.Fatal(err)
}
var blocks [][]byte
for {
var certDERBlock *pem.Block
certDERBlock, certPEMBlock = pem.Decode(certPEMBlock)
if certDERBlock == nil {
break
}
if certDERBlock.Type == "CERTIFICATE" {
blocks = append(blocks, certDERBlock.Bytes)
}
}
for _, block := range blocks {
cert, err := x509.ParseCertificate(block)
if err != nil {
log.Println(err)
continue
}
fmt.Println("Certificate:")
fmt.Printf("\tSubject: %+v\n", cert.Subject)
fmt.Printf("\tDNS Names: %+v\n", cert.DNSNames)
fmt.Printf("\tEmailAddresses: %+v\n", cert.EmailAddresses)
fmt.Printf("\tIPAddresses: %+v\n", cert.IPAddresses)
}
【讨论】:
pkix.Extension。