在编程语言、数据库、openssl 等方面实现 CA 的最佳技术是什么
1 回答
这个问题相当广泛。我发现就 PKI 而言,管理部分比技术部分更复杂。
设置基本 CA 时没有太多工作要做:保持私钥安全(一如既往),接收证书请求,以某种方式验证请求者的身份,颁发证书并将其存储在某个地方(您可以在顶部实现撤销机制这个的)。我稍微简化了图片,但这大致是整个过程,您可以使用现有库的多种语言轻松实现它。在 Java 中使用 BouncyCastle 是可行的,但我确信其他工具也可以使用,例如带有 Perl 的 OpenSSL。并非所有语言都公开了整个 OpenSSL API(如果他们在后台使用它),拥有一个可以读取和写入 ASN.1 结构的库会很方便(尤其是如果您需要特定的扩展)。对于存储,将其与目录结构(例如,
另一方面要考虑用户请求证书的简单程度。对于必须请求/使用证书但没有时间了解它的全部内容的用户来说,这可能会很痛苦。浏览器内密钥生成可以很方便,而不是让它们生成 CSR(或多或少手动)。对于浏览器内生成,它是使用<keygen>
(Netscape 为此引入的表单元素 - 例如适用于 Firefox 和 Opera)、ActiveX(用于 MSIE)或Mozilla Javascript 扩展的组合. 除了 ActiveX,您还可以拥有一个独立的“向导”,它是一个完整的应用程序(它将有更多权限来执行一些与证书相关的操作,否则,MSIE 中通过 JScript/ActiveX 可用的内容是有限的,并且取决于各种安全设置.)
要考虑的另一件事是您在申请时验证用户身份的系统。如果它相对较小,则没有什么可做的,但如果它是一个更广泛的结构,您可能需要当地代表和各种服务,以便他们将这些断言传达给将要颁发证书的人。您在这里需要的大部分内容将取决于您需要的保证级别。
您可能对OpenCA感兴趣。