只要根目录位于可信证书存储区中,浏览器就会接受由中间证书签名的结束证书。我的理解是,end实体证书本身不能对其他证书进行签名(或者在任何情况下浏览器都不会接受这样的证书)。如果是这种情况,则浏览器必须能够区分中间证书和end实体证书。它是怎么做到的?中间证书中是否有这样一条消息:“这是一个中间证书”(它已由根证书签名以确认有效性)?
发布于 2018-03-14 06:05:47
浏览器&操作系统只存储根证书,而不是中间证书。
您的问题是正确的,如果我有一个由我们加密签署的证书,有什么可以阻止我使用该证书来签署其他证书吗?!!
证书上有一个标志,指定它是CA实体还是End实体。
对于今天的StackExchange,服务器提供了3个证书。
如果分析每个cert,在基本约束->Subject Type下,值将为CA (1)和(2),但对于(3)则为"EndEntity“。浏览器和应用程序将不接受未经CA证书签名的证书,如果证书中缺少基本约束->Subject Type扩展,则默认情况下证书被视为结束实体。
还有一个基本约束->路径长度约束,它指定此根证书的证书链可以有多长。这将防止中间CA发出单独的CA证书。
http://www.pkiglobe.org/
发布于 2018-03-13 16:37:35
证书中有几个“标志”。其中一个是"I是一个CA“标志,另一个是”最大证书链长度“。最后一条限制证书链的长度。
openssl等证书工具将拒绝使用没有CA标志的证书对证书进行签名。
一旦找到非CA证书,浏览器将停止验证链。
没有"I是一个中间“标志,但是可以通过由其他人签名的CA证书来推断该状态。
发布于 2018-03-13 18:35:59
每个证书都有一个主题,描述证书是谁的,以及颁发者,这意味着谁颁发了(并因此签署)证书。对于根证书主体和颁发者是相同的,即证书由自己签名(“自签名”)。对于中级证书,主体和发行人是不同的。根证书和中间证书都必须是CA证书,即在基本约束中具有CA:true。
基于主体和发行人可以构建证书链。在链的开头是由CA证书#1颁发的服务器证书。此CA证书#1可能是自签名的(颁发者等于主体),在这种情况下,它是信任链的结束,因此是根证书。或者,它可能由另一个CA证书签名,这意味着它位于信任链中的某个地方(而不是终端),因此它是一个中间证书。
有关详细信息,请参阅SSL证书框架101:浏览器如何实际验证给定服务器证书的有效性?或维基百科:信任链。
https://security.stackexchange.com/questions/181462
复制相似问题