Squid4.6用作将所有流量转换为安全流量的转发代理。 squid的配置非常简单,它允许所有流量,并使用urlrewrite.pl将“ http”替换为“ https”。(不使用SSL-BUMP)Squid代理设置了tls_outgoing_options,因此可以进行以下工作:
client(http)-----> Squid ------> Server(https)
现在,我正在尝试使用websockets复制相同的内容。 有3个测试用例, 1。 客户端(ws)------>鱿鱼----->服务器(ws)
3 客户端(ws)------>鱿鱼----->服务器(wss)
前两种情况适用于鱿鱼,但第三种无效。而且我只需要第三个选项。
我已经为urlrewrite.pl提供了调试日志,以显示收到的Websocket连接的确切请求,以下是日志:
端口8080:是服务器,端口3128:是鱿鱼
调试:root:localhost:8080 127.0.0.1/localhost-CONNECT myip = 127.0.0.1 myport = 3128
即使Wireshark也显示相同的内容, 1.连接HTTP 1.1 2.取得 3.升级协议。
问题: 1.有什么方法可以使用squid4.6将websocket连接升级到安全的websocket吗? 2.或者说我使用wss-client(不带证书)和wss-server(带证书),有没有办法通知squid使用自己的证书(甚至在“ tls_outgoing_options”中提到)来建立连接?
必填: 客户端将始终发送不安全的流量HTTP / WS Squid应该将其升级到HTTPS / WSS。 在应用程序设置中,我们使用自己的openssl库创建证书-不能包含在(client.go)go-tls软件包中,因此我们使用squid代理来使用由我们自己的openssl库生成的证书。 客户端和转发代理(Squid)都在我们的特定环境中,因此squid.conf非常简单,并允许所有流量。 而且我们需要相互证书认证。
鱿鱼密码
#
# Recommended minimum configuration:
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localhost src 127.0.0.1
acl SSL_ports port 443
acl Safe_ports port 443 # https
acl Safe_ports port 80 # http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
# Squid normally listens to port 3128
http_port 3128
url_rewrite_program /etc/squid/urlrewrite.pl
url_rewrite_access allow all
tls_outgoing_options cert=/etc/squid/proxy.crt
tls_outgoing_options key=/etc/squid/proxy.key
tls_outgoing_options cafile=/etc/squid/serverauth.crt
urlrewrite CODE
#!/usr/bin/perl
select(STDOUT);
$| = 1;
while (<>) {
#print STDOUT "OK rewrite-url=\"https://google.com\"\n";
if (/^(|\d+\s+)((\w+):\/+)([^\/:]+)(|:(\d+))(|\/\S*)(|\s.*)$/) {
my $channel = $1;
my $protocolClean = $3;
my $domain = $4;
my $port = $5;
my $portClean = $6;
my $urlPath = $7;
if ($protocolClean eq 'http' ){#&& ($port eq '' || $portClean eq '80')) {
print STDOUT "${channel}OK rewrite-url=\"https://${domain}${port}${urlPath}\"\n";
#print STDOUT "${channel}OK rewrite-url=\"https://google.com\"\n";
} else {
print STDOUT "${channel}ERR\n";
}
}
}