1
私はX.509 PEMを解析し、値をstdoutにダンプする簡単な例を探しています。誰かが例を挙げることはできますか?PEMからのX.509属性の解析と印刷
私はX.509 PEMを解析し、値をstdoutにダンプする簡単な例を探しています。誰かが例を挙げることはできますか?PEMからのX.509属性の解析と印刷
を使用して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)
}
パーフェクトあなたのおかげ - すべての例では、私はので、私は木から木を見ることができなかった必要はありませんでした多くのものが含まれています。 – user1513388
実際にはもう1つの質問です。拡張機能のOIDSから読み取り可能な値を取得する必要がある場合例えば'\t拡張:[{Id:2.5.29.19 Critical:true値:[48 6 1 1 255 2 1 0]} {Id:2.5.29.15クリティカル:true値:[3 2 1 6]} {Id:2.5。 29.14クリティカル:偽値:[4 20 130 58 82 76 175 51 150 249 100 78 198 192 222 152 125 138 116 43 43 190 57] {Id:2.5.29.35クリティカル:false値:[48 22 128 20 193 119 177 45 157 107 253 81 197 19 136 6 147 96 30 135 125 249 52 15]}]それらを手に入れる簡単な方法はありますか? – user1513388
@ user1513388:あなたが何を意味するのか分かりません。あなたはすでにそれを持っています。それらは['pkix.Extension'](https://golang.org/pkg/crypto/x509/pkix/#Extension)としてデコードされます。 – JimB