如果您想降低预算,我建议您研究一下开源且免费使用的EJBCA ,尽管许多花哨的企业功能都在其付费版本中。他们对吞吐量提出以下声明:
由于 EJBCA 使用标准的关系数据库,适用于大规模和高性能,您可以轻松地将 EJBCA 扩展到数亿颁发的证书,甚至数十亿。根据所选的架构和接口,您可以达到非常低的延迟(低于 100 毫秒)和非常高的吞吐量(>100 证书/秒)。[来源]
尽管独立测试发现,当您获得超过 100 万份证书时,这种情况会很快下降。
解决您问题的第二部分:
使用“真正的”CA 颁发我的服务器证书并为我生成我的客户端证书有什么好处吗?
这真的取决于您使用证书的目的。我知道许多物联网 (IoT) 制造流程使用客户端证书来允许设备在制造期间对企业网络进行身份验证,以执行诸如首次配置、固件下载和其他您希望安全执行的操作. 在制造结束时,这些证书将被销毁/不再使用。在这种情况下,使用对外部 Internet 隐藏的私有内部 CA 是完全可以的。
另一方面,如果您在制造期间颁发的证书将保留在设备上投入生产,并且需要公开验证,那么情况就不同了。[例如,如果您制造灯泡,并且您需要用户的 iPhone 能够验证他们正在与真实的 IPBulb, Inc 灯泡通话,或者灯泡需要能够通过 IPBulb, Inc 服务器的身份验证以定期检索更新。]在这种情况下,您将需要一个面向公众的 CA 来执行所有密钥更新和撤销状态检查。这会很快变得复杂,与商业 CA 合作可能是值得的,只是为了避免麻烦。
编辑:拉入下面的评论以使答案自成一体。
我提倡将证书颁发外包的原因主要是由于服务器负载和响应时间,当您必须处理吊销和证书更新时。对于大多数中小型公司来说,将其外包给专家比聘请一流的数据中心工程师更便宜。
撤销:棘手的部分是验证证书的服务器需要能够询问 CA“这个证书仍然有效吗?” 并很快得到回复(例如 < 25 毫秒)。这称为在线证书状态协议 (OCSP)。随着基础架构的增长,单个 OCSP 服务器将无法处理流量,因此您现在需要实时数据库复制、负载均衡器和优秀的数据中心工程师来保持较低的响应时间。这超出了大多数中小型公司的范围,而且外包成本更低。
对于证书更新/重新颁发:客户端在旧证书到期之前下载其新/重新颁发的证书没有问题,但是您必须拥有积极管理此证书的服务器,这些服务器具有向公共互联网开放的证书管理端口(潜在的攻击面/黑客点)。此外,对于大约 30k 证书都在短时间内到期,服务器负载将是巨大的。同样,贵公司的数据中心工程师有多好?