仅适用于一个应用程序的x509证书 - 可供选择的OID

时间:2009-07-22 17:32:08

标签: certificate x509certificate

我正在创建将为用户创建证书的应用程序。我想以某种方式标记这些证书,以便稍后我可以通过以下类别在Windows用户证书存储中搜索它们:

  • 应用程序GUID(或名称 - 我想知道此证书适用于我的应用程序)
  • 证书角色(管理证书或用户证书)
  • 用户电子邮件

我知道最后一个我应该使用“E = J.Doe@mail.com”或OID号码“1.2.840.113549.1.9.1 = J.Doe@mail.com” 但我不知道为应用程序GUID和证书角色选择哪些OID。

或者我应该使用“密钥用法”字段?

我不知道它是否重要,但证书将用于对我的应用程序进行身份验证并解密数据库中的数据。

有没有标准方法可以做到?

3 个答案:

答案 0 :(得分:0)

好的,几个小时后我就来这样了。

主题字段将识别所有证书。 对于管理员证书,它将如下所示:

CN=<My application Name> Administrator,OU=Administrator,OU=<My application Name>,O=<My company Name>

和用户

E=<User email>,CN=<User email>,OU=User,OU=<My application Name>,O=<My company Name>

如果有人有更好的想法,我愿意接受建议: - )

答案 1 :(得分:0)

嗯...所以我在想的是你计划向每个用户颁发证书,并计划为每个应用程序制作不同的证书。因此,如果您有10个用户各使用3个应用程序,那么您将获得30个证书。

然后证书还描述了用户在应用程序中的角色以及用户的电子邮件。

说实话,我不会把所有这些信息都放在证书中。 PKI很难提供 - 用户通常很难设置证书,重新颁发证书是一件痛苦的事。通常,PKI部署策略会尝试最小化必须颁发的证书数量,并将其与风险进行平衡。

我见过的最典型的情况是,用户会获得一个用于识别自己的证书。证书包括用户的姓名和他的电子邮件。但它通常不包括用户的角色或特定的应用程序。而是在访问控制服务器上管理此信息,在用户访问系统时查询该信息。这样,可以更改用户可用的角色和应用程序,而无需重新颁发证书。 Active Directory或Select Access等产品可以做这类事情。

每次使用单独划分的原因是专门控制某种类型的风险。例如,如果一个用户在一台机器上进行高风险操作而在另一台机器上进行低风险操作,则风险更高的机器,则可能有两个证书(每台机器一个),因此您可以撤销低风险证书,不会禁用高风险功能。如果您计划将所有证书存储在同一台计算机上,则每个用户只能分发一个证书会更容易。

那就是说 - 如果您仍然发现每个角色需要为每个应用程序发出1个证书,我建议您找到一种方法将应用程序GUID,角色和电子邮件阻塞到可分辨名称中。

您不会从密钥使用或扩展密钥使用中获得太多的利润 - 这些具有非常具体的价值,我怀疑他们会传达您想要描述的信息。此外,它们以各种其他应用程序的特定方式使用,因此如果您需要与其他事物集成,那可能会变得棘手。

答案 2 :(得分:0)

您的任务是一项非常复杂的任务。要解决这个问题,最好的方法是使用openssl为一个小的内部证书颁发机构工作。请记住,分配给您引用的实体的PKI遵循以下规则:

  1. 专有名称:用于标识颁发证书的用户或实体。使用它来识别单个证书中的两个不同实体是不正确的:您的用户和应用程序。这两个实体应该在两个不同的地方进行识别。

  2. 密钥用法是一个8字位的字段,用于定义密钥的使用情况。每一位都有其预定的含义,不能用于其他目的。

  3. 我建议你:

    1. 将应用程序GUID作为x509扩展名。您可以为该范围分配和个人OID并查询它。如果您在内部使用OID,则可以使用您想要的任何值。如果您计划分发您的证书,您可以从IANA获得自己的OID

    2. 按照PKI的建议,将邮件放入托管替代邮件的字段中。

    3. 对于管理员或用户,您可以添加第二个x509扩展名或创建证书树。主CA证书,管理CA证书和用户CA证书。管理员CA的每个证书都将由用户CA签署每个用户证书。