是否可以使用由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
Run Code Online (Sandbox Code Playgroud)
为什么不能这样做?我尝试将这个新证书用于服务,浏览器抱怨证书缺少CA链.基本上我想使用一个为域签名的证书,并使用域证书作为子域的CA为子域创建新证书.这个过程如何设计起作用?
mti*_*935 16
证书的基本约束字段是否可以使用证书来签署另一个证书.向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.
为什么不能这样做?
mti2935 有一个很好的答案。总而言之,它在大多数情况下打破了信任模型。
我尝试将这个新证书用于服务,但浏览器抱怨该证书缺少 CA 链。
在“受信任的证书”存储中安装签名证书。
基本上我想使用一个为域签名的证书,并使用域证书作为子域的 CA 为子域创建新证书。
每个子域都会有一个唯一的证书,还是会有一个证书在主题备用名称中列出所有子域?
前者是可行的 - 您只需为每个子域购买一个新证书。后者有点困难,但并非不可能。
要执行后者,您通常使用从属根或中间体,允许您根据需要创建最终实体证书。如果您正在运行自己的私有 PKI,那么您可以这样做。在私有 PKI 情况下,您告诉用户在其“受信任的证书”存储中安装您的信任锚(或“CA 根”)。
如果您想避免浏览器警告等,而不要求用户安装您的可信根,那么您需要与 Trustwave 等人员联系。他们过去曾出售过这些类型的证书。更准确地说,他们将私钥放入硬件中,以便设备可以以更高的价格出售,并且私钥无法被复制。例如,Trustwave 承认颁发中间人数字证书。
这个流程是如何设计的?
这取决于用例。PKI 就是 PKI,任何介绍性书籍都会阐述这些概念。但私有 PKI 具有与浏览器不同的模型,因为它们是不同的用例。
归档时间: |
|
查看次数: |
8348 次 |
最近记录: |