我正在尝试创建私人 CA,并看到许多使用openssl ca命令来完成任务。然而,手册页,我看到了这些行:
示例最小 CA 应用程序
ca 实用程序最初是作为如何在 CA 中执行操作的示例而设计的。它本身并不应被用作完整的 CA:尽管如此,有些人还是将其用于此目的。
听起来该命令实际上不应该用于执行 CA 任务。
我的问题是:
- 使用时是否存在任何问题openssl ca还是这些诗句只是在描述一些历史背景?
- 如果有的话,创建私有 CA 的首选方法是什么?
答案1
从技术层面上讲,OpenSSL 使用的文本文件数据库不允许并发访问,这可能会使您的数据库面临风险。
当您使用任何软件签署证书时,您只是将一个函数应用于证书签名请求。结果输出是证书。无论您使用哪种软件执行此操作,输出都将是相同的格式 - X509 证书。
运营证书颁发机构需要您能够让信赖方相信您签署的证书是值得信赖的。具体来说,当您签署证书时,您证明据您所知,私钥由证书中指定的实体持有,而不是其他实体。因此,信赖方应该能够相信指定的实体就是他们声称的那个人/事物,而不是其他人。
为了运营 CA 并获得信赖方的信任,您需要做的远不止签署证书。例如,您需要:
- 将交易存储在数据库中
- 确保请求者持有证书请求中与公钥配对的私钥
- 确保只有您有权访问用于签署请求的私有签名密钥
- 确保任何授权人员操作您的 CA
- 记录所有交易,以便审计
- 定义请求、撤销、更新证书等的流程。
- 更多内容请阅读RFC 3647 - 互联网 X.509 公钥基础设施证书政策和认证实践框架了解需要什么
在设计和实施 CA 上花费的大部分精力都与确保维持信任所需的政策和程序有关。在 CA 运营上花费的大部分精力都与确保严格遵守政策和程序有关。
不幸的是,虽然 OpenSSL 很乐意为您创建证书,但它在所有其他方面都失败了 - 例如,没有访问控制,也没有将交易存储在可审计日志中等。同时,专门为该任务编写的软件考虑了操作可信 CA 所需的大量额外要求。
总结一下 - 如果你正在玩,请随意使用 OpenSSL;如果你需要相信,使用更好的东西。