1 回答
TA贡献1836条经验 获得超5个赞
// An ObjectIdentifier represents an ASN.1 OBJECT IDENTIFIER.
type ObjectIdentifier []int
所以对象标识符(简称OID)是一个整数数组。asn1 模块有解析它们的方法,例如parseObjectIdentifier.
这是您需要放在属性后面的结构Id:。
但现在你需要找出你想要的OID。
虽然难以阅读,但 OpenSSL 源代码可以向您显示 X.400/X.500/X.509 世界中许多事物的 OID,或者至少是 OpenSSL 已知的事物的 OID。
{"nsCertType", "Netscape Cert Type", NID_netscape_cert_type, 9, &so[407]},
so是之前定义的,如果你跳转到第 407项,你会看到:
0x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x01, /* [ 407] OBJ_netscape_cert_type */
并在同一文件中进行最终搜索OBJ_netscape_cert_type给出:
71, /* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */
表示对应的OID为2.16.840.1.113730.1.1
或者您可以解码上面描述此 OID 的整数列表。
第一个
0x60
是96
10所以2*40 + 16
,这意味着 OID 开头为2.16.
那么彼此都是“base128”形式:如果最高有效位为 1,则将所有后续数字的 7 个最低有效位组合在一起,直到其中一个最高有效位为 0
0x86
是10000110
2,所以必须与0x48
aka01001000
2一起使用,所以它实际上是00001101001000
2或840
100x01
小于 128 所以它就是它本身,1
0x86
仍然是10000110
2,但必须与0xF8
(11111000
2 ) 和0x42
(01000010
2配对,我们在这里停止,因为第一位是 0) 所以总共000011011110001000010
2或113730
10最后两个
0x01
是他们自己,1
。
所以我们确实再次得到2.16.840.1.113730.1.1
您可以在一些在线 OID 浏览器上仔细检查它,
Netscape 证书类型(Rec. ITU-T X.509 v3 证书扩展,用于识别证书主体是安全套接字层 (SSL) 客户端、SSL 服务器还是证书颁发机构 (CA))
然后,您甚至可以浏览各种弧(例如 netscape 弧或其他弧)来查找其他 OID。
您还可以获得完整的 ASN.1 表示法:
{joint-iso-itu-t(2) country(16) us(840) organization(1) netscape(113730) cert-ext(1) cert-type(1)}
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报