SSL 隧道涉及需要通过代理服务器与后端服务或安全服务器建立 SSL 连接的客户端。此代理服务器打开客户端和后端服务之间的连接,并将数据复制到双方,而不会直接干扰 SSL 连接。
演示 SSL 隧道的图表如下所示:
SSL隧道的工作
SSL隧道从创建到结束的逐步工作如下:
- 客户端在 HTTPS 端口 443 上发出隧道请求 CONNECT。此请求会自动发送到 HTTPS 请求的代理服务器。 RFC 2616 使用 CONNECT 请求建立隧道。
- 代理服务器在端口 8080 上接收隧道请求。然后它将安全目标服务器连接到客户端请求的端口。
- 代理服务器向客户端发回 200 OK 响应以确认 SSL 连接已创建。
- TLS 握手在客户端和服务器之间有效发生,因为代理服务器不参与其中。
- 在 TLS 握手之后,加密的数据通过代理服务器从客户端传递到服务器,反之亦然。此数据仅在客户端或服务器上解密,而不会在代理服务器上解密。
- 当客户端或服务器请求关闭连接时,代理服务器关闭443和8080端口的连接,恢复正常操作。
SSL隧道的特点
- 要使用 HTTPS URL 在客户端和服务器之间执行 SSL 隧道,客户端应该支持 SSL 和 HTTPS。如果客户端不支持 HTTPS,则可以使用 Proxy Server 的 HTTPS 代理功能。
- SSL 隧道的安全性与没有代理的 SSL 相当。这意味着使用代理服务器根本不会改变或降低 SSL 的安全性。
- SSL 隧道中的代理服务器无法访问客户端和服务器之间的事务,因为它是加密的。这意味着无法从代理服务器或第三方进行窃听。
- 代理服务器无法验证客户端和服务器之间使用的协议是否为 SSL,因为它无法访问事务。因此,出于安全原因,最好使用已知端口,即用于 HTTPS 的端口 443 和用于 SNEWS 的 563 端口。