【发布时间】:2021-12-05 06:06:09
【问题描述】:
我有一个 client.crt.pem。
我想获取自定义扩展键值。
(例如
2.9.1.6.2.6.1.9.9.4.1 和 G1,
或
2.9.1.6.2.6.1.9.9.4.1 和 0C024731
)。
如何在 golang 中解析它们?
这是证书信息。
使用openssl x509 -in client.crt.pem -noout -text 显示它。
...
...
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client, S/MIME
Netscape Comment:
OpenSSL Generated Client Certificate
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, E-mail Protection
2.9.1.6.2.6.1.9.9.4.1:
..G1
2.9.1.6.2.6.1.9.9.4.2:
..R1
2.9.1.6.2.6.1.9.9.4.3:
..3
X509v3 Subject Alternative Name:
IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1, DNS:localhost
...
...
或使用openssl asn1parse -i -in client.crt.pem
...
...
998:d=4 hl=2 l= 18 cons: SEQUENCE
1000:d=5 hl=2 l= 10 prim: OBJECT :2.9.1.6.2.6.1.9.9.4.1
1012:d=5 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:0C024731
1018:d=4 hl=2 l= 18 cons: SEQUENCE
1020:d=5 hl=2 l= 10 prim: OBJECT :2.9.1.6.2.6.1.9.9.4.2
1032:d=5 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:0C025231
1038:d=4 hl=2 l= 17 cons: SEQUENCE
1040:d=5 hl=2 l= 10 prim: OBJECT :2.9.1.6.2.6.1.9.9.4.3
1052:d=5 hl=2 l= 3 prim: OCTET STRING [HEX DUMP]:0C0133
...
...
【问题讨论】:
-
你试过什么?你能在 Go 中解析 x509 吗?
-
嗨,@rustyx,我已经添加了我的答案。我不确定它是否没有任何潜在的错误。无论如何,它现在工作正常。
-
你可以在这里找到func X509KeyPair的实现。它在循环中解码 certPEMBlock。我不知道为什么。你能不能告诉我?非常感谢。 :)
标签: go openssl ssl-certificate x509