从 PEM 解析和打印 X.509 属性

Parsing and printing X.509 attributes from PEM

我正在寻找一个在 go 中解析 X.509 PEM 并将值转储到标准输出的简单示例。任何人都可以提供一个例子吗?

您想使用 encoding.pem to decode the pem file, which will give you the DER blocks you can decode with the crypto/x509 包。

例如:

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)
}