作为托管服务提供商,我想让为客户的域生成证书的过程尽可能方便。
我正在考虑创建一个网页,任何人都可以:
- 从我们的私钥生成给定主机名的 CSR
- 拿走 CSR 并带着证书返回给我们
允许任何人根据我们的私钥生成潜在的数千个 CSR 是否有任何危险?
解决一些疑虑/问题:
我认为这里真正的危险是在很多域中重复使用相同的私钥。
它与拥有多个 SAN 的单个证书真的有什么不同(从安全的角度,而不是管理的角度)吗?例如,我们的 Cloudflare CDN 提供的证书具有以下 SAN:
DNS:ssl2917.cloudflare.com, DNS:*.app.com.pk, DNS:*.boldstatementmarketing.com, DNS:*.lacasadivetro.com, DNS:forospyware.com, DNS:*.reportcrowd.com, DNS:*.vladtv.com, DNS:*.1bse.com, DNS:*.discourse.org, DNS:*.forospyware.com, DNS:*.gossipbrigade.com, DNS:*.gsmcodigos.com, DNS:*.is.gl, DNS:*.madepal.co, DNS:*.mejorando.la, DNS:*.oceanvillageresort.com, DNS:*.pinside.com, DNS:*.ratelossprogram.com, DNS:*.soopermexican.com, DNS:*.tequierocali.org, DNS:1bse.com, DNS:app.com.pk, DNS:boldstatementmarketing.com, DNS:discourse.org, DNS:gossipbrigade.com, DNS:gsmcodigos.com, DNS:is.gl, DNS:lacasadivetro.com, DNS:madepal.co, DNS:mejorando.la, DNS:oceanvillageresort.com, DNS:pinside.com, DNS:ratelossprogram.com, DNS:reportcrowd.com, DNS:soopermexican.com, DNS:tequierocali.org, DNS:vladtv.com
是否存在现实情况,您有理由相信一个站点的密钥已泄露,而其他站点的密钥仍然安全。
并不真地。如果使用这些密钥之一的客户请求移动他的站点,我们将不会分发密钥。
您应该为您生成的每个 CSR 生成一个新的私钥。
对,我们应该。这是一个为了安全而牺牲便利(在我们这边)的例子。对于银行业,地狱没有。论坛网站?可能值得。
您在设置中真正需要考虑的是 CSR 的完整性。客户需要绝对确定,他们签署的 CSR 中的公钥确实是正确的公钥。
想一想,这里最好的选择可能是放弃生成 CSR 的要求……我们可以只向每个人分发一个 CSR 并让他们用他们喜欢的主机名签名(类似于startssl所做的 - 签名时他们丢弃请求的主机名并使用您在其网页上输入的内容的 CSR。
我不知道是否所有(任何?)CA 都会这样做,但这是一种选择。