是否可以使用由 CA 签名的证书作为其他证书的 CA 来签署新证书,并且仍然由根 CA 验证它们?
例子:
# create new key
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
....
# send csr to ca for signing
....
# now what if we make a new key and sign it with the received crt?
openssl genrsa -des3 -out newkey.key 2048
openssl req -new -key newkey.key -out newkey.csr
openssl x509 -req -in newkey.csr -CA server.crt -CAkey server.key -CAcreateserial -out newcert.crt -days 500
为什么不能这样做?我尝试将这个新证书用于服务,但浏览器抱怨该证书缺少 CA 链。基本上我想使用一个为域签名的证书,并使用域证书作为子域的 CA 为子域创建新证书。这个流程是如何设计的?
一个证书是否可以用来签署另一个证书是由该证书的基本约束字段定义的。当您向 CA 提交 CSR 时,CA 返回的证书应在基本约束字段中指定该证书不能用于签署其他证书。
否则,这将为任何人为任何网站创建虚假证书打开大门。例如,我可以为 mysite.com 创建 CSR,获取由 VeriSign 等 CA 签名的证书,然后为 www.paypal.com 创建 CSR,并使用 mysite.com 的证书为 www.paypal 的证书签名。 com.然后,我将获得 www.paypal.com 的有效证书。但是,我不是 paypal.com。
尽管如此,早期浏览器中的许多早期 SSL 实现甚至 OpenSSL 的某些早期版本都没有检查证书链中证书的基本约束字段,因此这是一个可以利用的漏洞。安全研究员 Moxie Marlenspike 积极引起公众的注意,迫使浏览器制造商解决这个问题。看http://www.thoughtcrime.org/ie-ssl-chain.txt http://www.thoughtcrime.org/ie-ssl-chain.txt了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)