在进行一些 Google 搜索时,我了解到有很多不同的证书颁发机构,例如名为“Active Directory 证书服务”的 Windows 角色、OpenSSL 库或 EJBCA 软件。
如果我没记错的话,我想知道他们都颁发证书并充当证书颁发机构之间的区别?
他们的工作方式不同吗?例如,它们是否都符合 X.509?
在进行一些 Google 搜索时,我了解到有很多不同的证书颁发机构,例如名为“Active Directory 证书服务”的 Windows 角色、OpenSSL 库或 EJBCA 软件。
如果我没记错的话,我想知道他们都颁发证书并充当证书颁发机构之间的区别?
他们的工作方式不同吗?例如,它们是否都符合 X.509?
首先,让我们注意语言,当您谈论像 Entrust、Verisign 或 Digicert 这样的公共 CA 时,是的,其中涉及一些实际创建和管理证书的软件,但您实际上是在谈论人。这些公司是受信任的 CA,不是因为他们使用的软件,而是因为他们的网络管理员非常重视安全性,因为他们的验证专家在向新组织颁发证书(至少对于 EV 证书)之前会一丝不苟地检查记录。所以至少 80% 的 CA 是关于人类的。
好吧,既然已经不碍事了,让我们谈谈软件。
您正在谈论管理公钥基础设施的软件工具。要成为 CA,您只需要在软件中做 3 件事:
公钥/私钥对。
该密钥对的自签名证书。
可以使用该密钥对签署证书签名请求.csr的软件工具。
另外 80% 是关于如何管理数据的政策,以及在实际签署.csr. 不同 PKI 软件之间的区别在于您获得了多少花里胡哨。
OpenSSL只是一个用于进行加密操作的命令行工具。一般来说,它是一个简单的命令行工具:你把一个文件放进去,它会返回一个文件。您如何处理这些文件取决于您自己。
openssl ca -cert ca.crt -keyfile ca.key -in infile.csr -out outfile.crt
它将完全支持 X.509 标准,以及一些用于发布 CRL、响应 OCSP 等的基本服务,但配置和管理将非常实用。
像EJBCA、Active Directory Certificate Services或Entrust Authority Security Manager(无耻插件!)之类的东西是成熟的 PKI 管理系统,它们作为实时网络服务器运行,响应请求,管理自己的数据库,并将 CA 的私钥存储在一个联网的硬件安全模块设备。特别是,它们带有漂亮的基于 Web 的管理界面(见下面的屏幕截图),它们可以通过CMP 协议进行自动证书管理操作,它们每隔几个小时自动发布关于他们曾经拥有的所有证书的证书撤销列表 (CRL)发出后,他们会响应在线撤销检查 (OCSP)- 即“嘿 CA,证书 #23488817 还好吗?” - 政府可以使用 EJBCA 和 Entrust Security Manager 来签发电子护照,Microsoft 的 Active Directory Certificate Services 和 Entrust Security Manager(我不确定 EJBCA)具有运行在客户端桌面或笔记本电脑上的客户端软件,可以与CA 并在证书即将到期时自动更新证书,等等。查看 EJBCA 的完整功能列表
TL;博士:从技术上讲,OpenSSL 包含运行和管理 CA 所需的一切,但它相当简单,需要您在命令行上手动执行大量操作。我无法想象使用 OpenSSL 管理超过 5 个证书的 PKI。更高级的 PKI 产品通过尽可能地自动化和提供基于 Web 的管理 UI 来提供便利。它们是为管理数百万用户的系统而设计的——想想为整个互联网颁发 SSL 证书的公共根 CA,或者为大型政府部门管理电子邮件 S/MIME 证书,或者管理证书的公共根 CA。国家的护照。我猜想世界上拥有超过 100 万用户的 CA 中有 70% - 80% 正在运行我在这里提到的三种 PKI 软件之一——Microsoft ADCS、EJBCA 或 Entrust SM。

(来源:ejbca.org)

(来源:ejbca.org)