在SSL信任层次结构中,用于签署中间证书的内容以及它与根证书的关系如何?

时间:2017-12-03 07:12:15

标签: ssl https certificate ssl-certificate

我正在完成SSL的任务,我觉得我理解了如何在非对称和对称加密中使用证书的基础知识。但是我很难理解信任层次结构如何工作的一些细节。

具体来说,用于签署中间证书的是什么?我查看的所有指南都指出CA根证书用于签署中间证书。但究竟什么“签署”在这里意味着什么呢?换句话说,服务器如何证明其中间证书是由CA根证书验证的?

我的猜测是,在生成中间证书的签名时会使用根证书的公钥或签名,但我不确定这是否准确。

我真的很感激任何提高我理解的信息。

1 个答案:

答案 0 :(得分:2)

如果只有一个中间件(通常但并非总是如此),则中间证书由root用户签名,其方式与终端实体证书(对于SSL / TLS,主要是服务器证书)的签名方式完全相同中间人。在这两种情况下,这都是速记; 签名实际上是使用非对称密钥对的私钥完成的,而cert包含相同密钥对的公钥,用于验证使用私钥进行的签名。由于私钥是私有的,我们所有使用CA的人只看到他们的公钥,我们专注于此。因此:

  • 使用属于中间CA的私钥对服务器证书进行签名;中间证书包含匹配的公钥。作为验证服务器证书的一部分,relier(例如浏览器)使用服务器证书中的Isssuer名称查找或确认中间证书,并使用来自中间证书的公钥来验证服务器证书上的签名;这可以确保服务器证书实际上是由中间CA颁发的,并且没有被篡改。

    根据SSL / TLS标准,服务器应始终在握手时发送服务器证书后的中间证书(或按顺序),但如果不这样做,某些客户可能会使用证书中的AIA或其他启发式意味着获得证书,或者可能已经缓存甚至配置。

  • 使用属于根CA的私钥对中间证书进行签名;根证书包含匹配的公钥。作为验证中间证书的一部分,relier使用中间证书中的颁发者名称查找根证书,并使用来自根证书的公钥来验证中间证书上的签名;这可以确保中间证书实际上是由根CA颁发的,并且没有被篡改。

    根证书通常必须(已经)在relier的本地信任商店中。并且服务器不需要发送它;通常,信任存储由浏览器开发人员(Firefox)或OS /平台开发人员(IE / Edge,Chrome,Safari)提供。

注意这两个语句之间的紧密并行与relier如何找到父证书的(值得注意的)例外。另请注意,验证SSL / TLS连接的服务器证书链不仅仅需要验证签名,尽管验证签名是关键部分,如果没有签名,则无法确保其他验证标准。

一个中间CA和中间证书通常由大量(数千到数百万)服务器证书和服务器使用。服务器不负责证明'关于中间证书的任何内容,只传递给客户端,验证整个链。

跨堆栈也见 https://security.stackexchange.com/questions/56389/ssl-certificate-framework-101-how-does-the-browser-actually-verify-the-validity 它有一个很好的关系图形。