嗯...所以我在想的是您计划向每个用户颁发证书,并且您计划为每个应用程序制作不同的证书。因此,如果您有 10 个用户每人使用 3 个应用程序,那么您将制作 30 个证书。
然后证书还描述了用户在应用程序中的角色,以及用户的电子邮件。
说实话,我不会把所有这些信息都放在证书里。PKI 很难提供——用户通常很难设置证书,并且重新颁发证书很痛苦。通常,PKI 部署策略会尽量减少必须颁发的证书数量,以平衡风险。
我见过的最典型的场景是给用户一个证书,他用它来标识自己。证书包括用户的姓名和他的电子邮件。但它通常不包括用户的角色或特定的应用程序。相反,此信息在访问控制服务器上进行管理,当用户访问系统时会查询该服务器。这样,可以更改用户可用的角色和应用程序,而无需重新颁发证书。诸如 Active Directory 或 Select Access 之类的产品会执行此类操作。
将每次使用分成单独的证书的原因是为了专门控制某种类型的风险。例如,如果单个用户在一台机器上进行高风险操作,而在另一台具有更高潜在风险的机器上进行低风险操作,则可能会有两个证书(每台机器一个),因此您可以撤销低风险证书而不禁用高风险功能。如果您计划将所有证书存储在同一台机器上,那么每个用户只分发一个证书会更容易。
也就是说 - 如果您仍然需要为每个角色的每个应用程序的每个用户颁发 1 个证书,我建议您找到一种方法将应用程序 GUID、角色和电子邮件塞入专有名称。
您不会从 Key Usage 或 Extended Key Usage 中获得太多好处 - 这些具有非常具体的价值,我怀疑它们是否会传达您想要描述的信息。此外,各种其他应用程序以特定方式使用它们,因此如果您需要与其他东西集成,这可能会变得很棘手。