[squid-users] cache_peer directive with SNI
kristopher at lalletti.ca
Thu Jun 23 12:31:50 UTC 2016
Tried both and individually; nothing doing.
I keep getting from Squid a TCP_MISS/503 to which the client page states:
(54) Connection reset by peer (TLS code: SQUID_ERR_SSL_HANDSHAKE)
Handshake with SSL server failed: [No Error]
I’m currently using:
Squid Cache version 3.5.19
I just tried substituting the service-name (service.foo.com) in my /etc/hosts, and define cache_peer to connect to service.foo.com, and even that doesn’t work. It appears that the cache_peer directive, when SSL is enabled does not transmit SNI.
I did however, manage to get it working to some degree using ssl_bump (http://wiki.squid-cache.org/Features/SslPeekAndSplice) using peek, however, I’m also doing URI filtering with squid, and this defeats the purpose to URI filtering as it only checks the requested SNI header from the end-user, and transposes the connection to the cache_peer.
So I’m thinking that the absence of SNI on cache_peer is a ‘bug’ or a ‘missing feature’, which I’m guessing my next viable option is to see if I can bridge the SNI gap with something like STUNNEL.
Anyone else have any thoughts?
From: Hector Chan [mailto:hectorchan at gmail.com]
Sent: June 22, 2016 1:09 AM
To: Kristopher Lalletti <kristopher at lalletti.ca>
Cc: squid-users at lists.squid-cache.org
Subject: Re: [squid-users] cache_peer directive with SNI
Have you looked at the options forceddomain and ssldomain under the cache_peer directive? Those may be just what you need.
On Tue, Jun 21, 2016 at 8:14 PM, Kristopher Lalletti <kristopher at lalletti.ca<mailto:kristopher at lalletti.ca>> wrote:
I'm replacing an Apache setup as a reverse-proxy with Squid v3.5, and I've hit a small snag.
Basically, I need to tell squid to pass the proper SSL SNI name to the backend webserver which is accessed via SSL, and naturally, the SSL SNI service-name (service.foo.com<http://service.foo.com>) is not the server-hostname (webserver1.foo.com<http://webserver1.foo.com>), because I've got 3 servers providing for that service-name.
Valid Request to my backend server:
curl --verbose --resolve service.foo.com:10.10.10.10 https://service.foo.com/
Bad requests to my backend server:
curl --verbose --header 'Host: service.foo.com<http://service.foo.com>' https://webserver1.foo.com/
curl --verbose https://webserver1.foo.com/
curl --verbose https://10.10.10.10/
I've looked at the configuration that was generated for the cached_peer, and it came to this:
cache_peer webserver1.foo.com<http://webserver1.foo.com> parent 443 0 proxy-only no-query no-digest originserver login=PASSTHRU connection-auth=on round-robin ssl sslflags=DONT_VERIFY_PEER front-end-https=auto name=rvp_webserver1
Unfortunately, cached_peer doesn't seem to have any directives about this, which leads me to believe there may be a magic SSL Squid ACL that would tell the cache_peer to transpose the requested hostname as part of the SSL SNI hello message, or something like this...
Any advice/orientation to approach the problem would be much appreciated.
squid-users mailing list
squid-users at lists.squid-cache.org<mailto:squid-users at lists.squid-cache.org>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the squid-users