Certificate 表示版本和“的标准方式”;“模式”;对于X509证书

Certificate 表示版本和“的标准方式”;“模式”;对于X509证书,certificate,x509,asn.1,Certificate,X509,Asn.1,我有一个系统,其中X509证书可以有许多“模式”,其中模式是证书主题中所需/可选的确切OID的集合。验证这些证书的应用程序需要知道给定证书使用了什么模式(以及该模式的哪个版本) 例如,模式A需要CN、O、OU,模式B需要CN、UID、O、C、ST 我正在寻找一种在证书中编码模式(+版本)的标准方法,以便接收应用程序可以从证书中知道如何解析它。解决方案: 劫持一些完全无关的OID,把这些信息塞进主题中。我不喜欢这样,但它可以作为黑客的后备手段 利用扩展。我认为Subject目录属性看起来可能是合适

我有一个系统,其中X509证书可以有许多“模式”,其中模式是证书主题中所需/可选的确切OID的集合。验证这些证书的应用程序需要知道给定证书使用了什么模式(以及该模式的哪个版本)

例如,模式A需要CN、O、OU,模式B需要CN、UID、O、C、ST

我正在寻找一种在证书中编码模式(+版本)的标准方法,以便接收应用程序可以从证书中知道如何解析它。解决方案:

  • 劫持一些完全无关的OID,把这些信息塞进主题中。我不喜欢这样,但它可以作为黑客的后备手段
  • 利用扩展。我认为Subject目录属性看起来可能是合适的,但它似乎仍然需要OID名称/值对作为其负载,那么又是哪个OID呢
  • 完全是别的吗

  • 同样,我可以用#1实现这一点,也可以用#2进行类似的破解,但我真正想要的是一种标准的非破解方式来实现这一目标

    我假设您会关心使用了什么模式。这意味着DN中可能正好有这些字段,而且它们也构成了CA签名的内容(带有强制杂项)。因此,假设您的模式是不同的-这将让您区分它们

    另一个选择是每个计划(次级)CA;或者只需使用netscape注释字段:)


    然而,根据我的经验——当该组织因此而宣传、识别/重构和解释该计划时——这通常意味着它有某种商业目的。因此,它通常有一个有用的商业名称。那样的话考虑一个(额外的)O或OU(如果需要的话,需要多变量)。

    < P>我已经在2.25个圆弧下使用了一个UUID为基础的OID,用于我的两个元数据字段(模式和版本)。

    以下站点提供UUID生成器作为一种方便和注册链接(尽管注册不是严格要求的):


    您可以为扩展和主题RDN定义自定义OID。很抱歉,我现在(也许以后)不能告诉你获取这些私人OID的正确方法,但这并不太复杂。@EugeneMayevski'EldoSCorp这就是我要做的。如果你想把你的评论转移到一个答案上,我会接受的。对于任何有相同问题的用户,您可以在2.25 arc下生成并注册一个基于UUID的OID:谢谢。你可以用链接发布自己的答案并接受它——这比我的评论对其他人更有用。模式示意图会提供提示,但肯定不是唯一的标识符。例如,一个模式可以是另一个模式的子集,或者相同的字段可以以不同的方式使用。