我想了解一些事情。
我使用xca生成密钥,这是一个用于openssl的UI。
我创建了一个CA,然后为https生成服务器证书,并使用此CA对生成的证书进行签名。新创建的证书是CA的子类(据我所知)。 我为域中放入CN,生成 4096bit 长度的新私钥,导出包含私钥的crt和密钥pem。在这种情况下上传并配置nginx。
现在我通过https访问该网站。在Firefox中单击连接信息时,我看到:
连接加密:高级加密(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 128位密钥)
在Chromium:
您与domain.tld的连接使用 128位加密进行加密。 < ...>
问题:
我的私钥是4096位。为什么使用128位?
这128位中使用了4096位中的哪一位?
如果只使用1/32的长度,为什么我会生成4096位密钥?
我想了解这个过程是如何运作的。
答案 0 :(得分:1)
4096位RSA密钥及其相关证书在建立连接和密钥协议期间提供身份验证,允许客户端验证它们确实已连接到您的服务器,而不是中间人声称是你的服务器。
然而,RSA算法比具有类似安全属性的AES等对称算法慢几个数量级,并且受限于它可以加密的数据量。因此,它不用于保护传输的实际数据,而是在客户端和服务器之间达成对称算法的会话密钥。
在这种情况下,使用临时Elliptic Curve Diffie-Hellman(ECDHE)算法约定会话密钥,该算法允许客户端和服务器在不传输密钥本身的情况下导出随机共享密钥。 此密钥为128位,并且与Galois/Counter Mode(GCM)中的对称AES加密算法一起使用。