[squid-users] Peeking on TLS traffic: unknown cipher returned
James Lay
jlay at slave-tothe-box.net
Fri Oct 21 16:01:52 UTC 2016
On 2016-10-21 09:58, Leandro Barragan wrote:
> James, thanks for your advice! I've read your email on this list about
> LibreSSL. I tried to compile Squid with LibreSSL in the first place
> because of what you wrote about ChaCha20. But unfortunately, I
> couldn't, compilation stopped because of some obscure error.
>
> Do you remember what version of squid and libressl you used? BTW I
> tried with OpenSSL 1.0.2g applying the CloudFare ChaCha20 patch, but
> it doesn't work either, same error (unknown cipher)
>
> Thanks!
>
> On 21 October 2016 at 10:55, James Lay <jlay at slave-tothe-box.net>
> wrote:
>> On 2016-10-20 20:15, Leandro Barragan wrote:
>>>
>>> Thanks for your time Alex! I modified my original config based on
>>> Amos
>>> recommendations, so I think now I have a more consistent peek &
>>> splice
>>> config:
>>>
>>> acl TF ssl::server_name_regex -i facebook fbcdn twitter reddit
>>> ssl_bump peek all
>>> ssl_bump terminate TF
>>> ssl_bump splice all
>>>
>>> As you mentioned, terminate closes the connection, it doesn't serve
>>> an
>>> error page (when it works, i.e. with reddit and twitter).
>>>
>>> I've compiled Squid 3.5.22 using OpenSSL 1.0.2j and I'm having the
>>> same exact issue, even with this new config. Based on what you
>>> explained, I think it's a OpenSSL problem and Squid can't do anything
>>> about it. I have two reasons to believe that:
>>>
>>> 1) The "unknown cipher returned" error get's triggered on terminated
>>> and non terminated (e.g. microsoft.com) sites, which makes me think
>>> it
>>> has nothing to do with Squid ACLs.
>>> 2) All problematic sites use a new cipher called "ChaCha20" (E.g.
>>> TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256....according to Qualys
>>> online analyzer and TestSSLServer tool)
>>>
>>> A lot of sites are using this new cipher. I'm back at the beginning,
>>> I
>>> will continue trying to compile Squid with patched versions of
>>> OpenSSL
>>> or LibreSSL.
>>>
>>> Thanks!
>>>
>>> On 20 October 2016 at 01:01, Alex Rousskov
>>> <rousskov at measurement-factory.com> wrote:
>>>>
>>>> On 10/19/2016 12:44 AM, Leandro Barragan wrote:
>>>>
>>>>>> error:140920F8:SSL routines:SSL3_GET_SERVER_HELLO:unknown cipher
>>>>>> returned (1/-1/0)
>>>>
>>>>
>>>>> I fail to see why is this happening. I only need to peek on the
>>>>> connection and make a decision based on SNI,
>>>>
>>>>
>>>> Please note that "peek and make a decision based on SNI" is not what
>>>> your configuration tells Squid to do. Your configuration tells Squid
>>>> to
>>>> peek during step2, which means making a decision based on server
>>>> certificates (and SNI).
>>>>
>>>>
>>>>> I'm not Bumping, so I
>>>>> don't understand why ciphers matter in my situation.
>>>>
>>>>
>>>> The ciphers matter because Squid v3 uses OpenSSL parsers during
>>>> step1,
>>>> step2, and step3. FWIW, Squid v4 uses OpenSSL parsers during step2
>>>> (a
>>>> little) and step3. It is possible to completely remove OpenSSL from
>>>> step2 but there is currently no project to do that AFAIK.
>>>>
>>>>
>>>>>> ssl_bump peek all step1
>>>>>> ssl_bump peek all step2
>>>>>> ssl_bump terminate face step3
>>>>>> ssl_bump terminate twitter step3
>>>>>> ssl_bump splice all step3
>>>>
>>>>
>>>> BTW, "step1", "step2", and "step3" ACLs do nothing useful in the
>>>> above
>>>> config. You can safely remove them to arrive at the equivalent
>>>> ssl_bump
>>>> configuration.
>>>>
>>>>
>>>> On 10/19/2016 07:42 AM, Amos Jeffries wrote:
>>>>>
>>>>> Terminate means impersonating the server and responding to the
>>>>> client
>>>>> with an HTTPS error page.
>>>>
>>>>
>>>> Terminate means "close client and server connections immediately".
>>>> The
>>>> problem is not with the terminate action but with peeking (which
>>>> relies
>>>> on OpenSSL, especially during step2, especially in Squid v3).
>>>>
>>>>
>>>> HTH,
>>>>
>>>> Alex.
>>
>>
>> FWIW I've had great success with the git version of libressl and using
>> the
>> below:
>>
>> ./configure --prefix=/opt/libressl
>>
>> and for squid:
>>
>> ./configure --prefix=/opt --with-openssl=/opt/libressl --enable-ssl
>> --enable-ssl-crtd
>>
>> James
I'm currently using squid-3.5.22 and using the below git for libressl:
commit b7ba692f72f232602efb3e720ab0510406bae69c
Author: Brent Cook <bcook at openbsd.org>
Date: Wed Sep 14 23:40:10 2016 -0500
What's the error you're getting when you try and compile?
James
More information about the squid-users
mailing list