是否存在支持 SSL 的 SOCKS 代理服务器?
Posted
技术标签:
【中文标题】是否存在支持 SSL 的 SOCKS 代理服务器?【英文标题】:Do SOCKS proxy servers exist that have SSL support? 【发布时间】:2016-06-07 20:47:21 【问题描述】:我遇到了一个开源 SOCKS 客户端库,它支持使用信任管理器密钥连接到 SOCKS 代理来验证远程服务器。
但是,我一直找不到支持此功能的 SOCKS 代理服务器。这些都可以商用吗?
有问题的库是sockslib (Java),它支持这个特定的client example。
一个相关的问题:使用这个特定的库,可以定义 keymanager 密钥(除了 trustmanager 密钥)以及普通凭据。这对 SOCKS 服务器有意义吗?
【问题讨论】:
如果客户端知道它正在连接到需要 SSL 的代理,它可以使用 SSL 连接到代理本身。但是在创建到远程服务器的连接之后,客户端应该直接与服务器创建任何服务器端 SSL 会话,代理只是一个传递。当服务器不知道什么样的客户端连接到它时,我不明白代理验证服务器有什么意义,服务器无法执行两次握手。除非代理正在嗅探客户端和服务器可能相互交换的任何 SSL 握手...... ...但这不是代理的责任,客户端应根据需要验证服务器的身份,反之亦然。 没有 TrustManager 密钥。 @EJP 我检查了,TrustManagers 是一种 Java 机制,用于管理 X.509 公钥证书,以确认服务器的身份。 "...使用信任管理器密钥验证远程服务器。" - 从库的源代码来看:它只是验证与代理的连接,而不是与远程服务器的连接。这是有道理的,因为 socks 代理只是创建了第 4 层隧道,甚至不知道隧道内使用的协议。这意味着它也不知道是否使用了 TLS。 【参考方案1】:WinGate SOCKS 服务器支持接受连接 (TCP) 并在 SOCKS 协议之前立即对其执行 TLS 握手。
它还支持使用客户端证书对 SOCKS 服务器进行身份验证。或者您可以在此之后只进行纯文本(甚至 GSS-API)身份验证。
请注意,这不是 1997 年 draft-aft-socks-ssl-00 中提出的方法,该方法建议在 SOCKS 框架的顶部分层 TLS(IMO 是一种不必要的复杂方法,它只提供一个好处 -是否能够协商 SSL - 有很多缺点)。
【讨论】:
以上是关于是否存在支持 SSL 的 SOCKS 代理服务器?的主要内容,如果未能解决你的问题,请参考以下文章
天气 SSL SOCKS5 代理加密的 TCP/IP 标头信息