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