在X509证书中放置供人阅读的版本字符串,是否有标准字段/OID?

前端开发 2026-07-09

我为一个SoC写了一个自定义的SBL。发布构建时,我想把发布的名称作为一个人类可读的字符串写入附着在发布二进制文件上的X.509证书中。

我不认为让OpenSSL把这个字符串添加到证书中有什么问题。只要把这段添加到我传入的配置文件里就可以了:

[ v3_ca]
1.2.3.4.5.6.7.8.10 = ASN1:SEQUENCE:my_version_extension
[ my_version_extension ]
version_string = ASN1:UTF8String:my_version_here

……但我不知道应该使用哪个OID来表示固件版本/描述字符串。

我本来希望能找到一个在行业或开放标准中已经定义的用于这类信息的OID。

  • 我希望避免让我的组织为此单独预留一个自定义的OID。
  • ~~我不能随便编一个随机的OID。实际上我可以让我的SBL与其他工具寻找我想要的任意OID,但这可能会给其他人带来很多问题。~~

编辑:
显然你可以伪造未注册的OID,形式为“2.25.X”,其中X 是以十进制表示的128位随机UUID/GUID。这在 ITU X.667 中有规定。

X.667第13页给出的示例是……

UUID f81d4fae-7dec-11d0-a765-00a0c91e6bf6

将转换为OID

2.25.329800735698586629295641978511506172918

如果你愿意接受没有第三方工具知道它的含义并直接跳过它,那么在X.509扩展中使用这样的OID也是完全有效的。

解决方案

使用「Netscape Comment」字段,OID为 2.16.840.1.113730.1.13。

根据 Red Hat文档

B.4.3.2. netscape-comment

该扩展的值是IA5String。它是一个注释,在查看证书时可以显示给用户。

OID

2.16.840.1.113730.13

请注意,上面的OID是错误的。正确的是 2.16.840.1.113730.1.13

IA5String只是一个ASCII字符串。

OpenSSL 直接支持

字符串扩展简单地包含一个字符串,里面包含的是值本身或获取它的方式。

例如:

nsComment="This is a Comment"

以及

Netscape字符串扩展

Netscape Comment (nsComment) 是一个字符串扩展,包含在某些浏览器查看证书时会显示的注释。

例如:

nsComment = "Some Random Comment"

是的,它已经被废弃了。所以其他人都会忽略它。这正是你想要的。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章