2016-04-15 3 views

Antwort

2

Sie möchten encoding.pem verwenden, um die PEM-Datei zu dekodieren, die Ihnen die DER-Blöcke liefert, die Sie mit dem crypto/x509-Paket dekodieren können.

Zum Beispiel:

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

Perfekt dankt Ihnen - alle Beispiele enthalten viele Dinge, die ich nicht brauchte, so konnte ich nicht das Holz von den Bäumen sehen. – user1513388

+0

Eigentlich eine andere Frage. Wenn ich die lesbaren Werte von den OIDS in den Erweiterungen bekommen muss. z.B. '\t Erweiterungen: [{Id: 2.5.29.19 Kritisch: wahr Wert: [48 6 1 1 255 2 1 0]} {Id: 2.5.29.15 Kritisch: wahr Wert: [3 2 1 6]} {Id: 2.5. 29.14 Kritisch: falsch Wert: [4 20 130 58 82 76 175 51 150 249 100 78 198 192 222 152 125 138 116 43 190 57]} {Id: 2.5.29.35 Kritisch: falsch Wert: [48 22 128 20 193 119 177 45 157 107 253 81 197 19 136 6 147 96 30 135 125 249 52 15]}] Gibt es einen einfachen Weg, sie zu bekommen? – user1513388

+0

@ user1513388: Ich bin mir nicht sicher, was du meinst. Du hast sie schon; Sie werden als ['pkix.Extension'] dekodiert (https://golang.org/pkg/crypto/x509/pkix/#Extension). – JimB