我使用自己的 CA 为基础设施中的服务创建 SSL 证书。这些证书由我的 CA 直接签名。
我觉得这可能是一个不靠谱的策略,因为如果证书被盗用,我需要从一家 CA 创建新证书。如果 CA 被盗用,游戏就结束了,因为每项服务都需要更新。
因此,我的理解是,“保护”自己和“淡化”担忧的典型方法是创建一个证书链,并用链的末尾签署服务证书,这样,如果签名者受到损害,则可以使用下一级证书来创建新的签名证书。
我说得对吗?
那么我想要做的是创建我自己的证书链。
整个 TLS/SSL 内容对我来说仍然有点模糊,但正如我所看到的,首先创建一个主密钥,然后openssl genrsa
使用该密钥创建一个自签名证书以openssl req -x509 -new
创建 CA。
openssl req -new -key' and sign the request with my CA with
然后我可以使用openssl x509 -req -CA ca.pem ...创建新密钥和证书签名请求`
那么,要创建证书链,我应该做什么?
我是否只需创建一个新密钥、新的签名请求,然后使用最后签名的证书(而不是 CA)对其进行签名?依此类推,直到我拥有足够级别的保护,然后使用最低级别的证书对所有证书/密钥对进行签名?
这些东西很令人困惑,我想把它弄正确;-)
我发现有关 TLS 的所有内容都非常复杂,而“简单”教程却晦涩难懂。我正在查看 openssl 手册页,但我想获得该过程的简单解释,然后确保每个步骤都正确无误。
感谢您的见解。
答案1
您使用根 CA 签署中间 CA 请求。借助此签名证书颁发机构,根 CA 可以保持离线状态。
根 CA 仍可信任,并在必要时颁发替代签名 CA。挑战就变成了颁发证书撤销,特别是如果您无法控制所有客户端。
如果你手动操作,这个过程会有些复杂。请参阅https://jamielinux.com/docs/openssl-certificate-authority/ 作为指南。
答案2
当 Let's Encrypt 处于公开测试阶段时,似乎引起了很多骚动......