HTTP / HTTPS内容身份验证

时间:2018-02-18 20:04:15

标签: http authentication https proxy

我可以在谷歌上找到任何快速答案。最有可能的答案在于http或https上的RFC文档中的某些地方,但我不能(太费时)获取这些信息。 所以这是一个问题: 通过HTTP服务的网页内容是否由服务器以数字方式签名? HTTPS的问题相同。 如果是,使用代理时它是如何正常工作的?在我看来,代理可以篡改数据,用它自己的私钥签署篡改数据,并声称相应代理的公钥实际上是原始服务器的真正公钥?我假设客户端无法检查原始服务器的公钥,因为有一个代理可能会撒谎。 我很抱歉,如果这是一个转储问题,并且可以在互联网上轻松搜索,但我找到的每个答案都对我产生了一些疑问。 谢谢你的帮助:)

1 个答案:

答案 0 :(得分:1)

通过HTTPS发送的内容已加密,客户端将验证与之通信的主机证书的真实性。服务器使用由证书颁发机构(CA)签名的TLS / SSL密钥/证书.CA确保它们仅签署域的合法所有者的证书。他们自己的CA证书安装在您的浏览器/操作系统中。通过使用这些预安装的证书,浏览器可以检查远程服务器使用的密钥是否由受信任的CA签名。

中间人没有原始密钥,也没有CA为相关域签名的其他密钥。因此,中间人不能在不破坏HTTPS的情况下修改内容。

另一方面,如果要使用代理来缓存请求,代理可以终止HTTPS连接。这意味着代理具有自己的服务器连接并验证证书。为了保护与客户端的连接,代理充当CA并使用具有自签名证书的HTTPS连接。为避免浏览器抱怨不安全的连接,您需要安装代理自己的CA证书。

HTTP内容未签名且可能被篡改。

编辑2018-06-15: 我对这里的“签名”一词并不十分准确。服务器实际上并不签署它发送的内容。这意味着如果您存储来自服务器的响应,则无法证明它们来自该服务器,换句话说:standard TLS dose not provide non-repudiation。但是,在握手期间建立服务器的真实性。客户端使用服务器公钥加密主密钥。只有拥有私钥的服务器才能解密主密钥并从中获取会话密钥。

另一方面,CA实际签署了证书。 CA无法有效否认它已签署服务器证书的真实性。