我使用自己的 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 手册页,但我想简单地解释一下这个过程,然后我会确保每一步都正确。
感谢您的洞察力。
您使用根 CA 签署中间 CA 请求。使用此签名证书颁发机构,根 CA 可以保持离线状态。
根 CA 仍然可以信任,并在必要时发布替换签名 CA。然后挑战变成颁发证书吊销,特别是如果您不控制所有客户端。
如果您手动执行此过程,则该过程有些复杂。有关指南,请参阅https://jamielinux.com/docs/openssl-certificate-authority/ 。
当 Let's Encrypt 现在处于公共测试版时,似乎大惊小怪......
https://letsencrypt.org/