[squid-dev] [PATCH] Secure ICAP

Tsantilas Christos chtsanti at users.sourceforge.net
Thu Apr 23 17:58:18 UTC 2015


A new patch  for Secure ICAP.
This is synced with the latest trunk.

Also handles Amos requests.

Regards,
    Christos

On 04/10/2015 04:51 AM, Amos Jeffries wrote:
> On 10/04/2015 2:43 a.m., Tsantilas Christos wrote:
>>
>> This patch adds support for ICAP services that require SSL/TLS transport
>> connections.
>>
>> To mark an ICAP service as "secure", use an "icaps://" service URI
>> scheme when listing your service via an icap_service directive.
>
> The squid.conf parsing code contradicts that - it expects "... ssl
> icap://...".

Inside Adaptation::Icap::ServiceRep::finalize() method if the protocol 
is the "icaps" then sets the secure.encryptTransport flag to true. IT 
can be used to enable secure icap without any ssl option.

>
>
>>
>> Squid uses port 11344 for Secure ICAP by default, following another
>> popular proxy convention. The old 1344 default for plain ICAP ports has
>> not changed.
>>
>> This patch should applied after the "server_name" and "splicing resumed
>> sessions" patches applied to trunk, and after re-merged with the trunk.
>> However we can start the discussion if you agree.
>>
>>
>> Technical Details
>> ==================
>>
>> This patch:
>>    - Splits Ssl::PeerConnector class into Ssl::PeerConnector parent and
>> two kids: Ssl::BlindPeerConnector, a basic SSL connector for
>> cache_peers, and Ssl::PeekingPeerConnector, a peek-and-splice SSL
>> connector for HTTP servers.
>>
>>    - Adds a third Ssl::IcapPeerConnector kid to connect to Secure ICAP
>> servers.
>>
>>    - Fixes ErrorState class to avoid crashes on nil ErrorState::request
>> member. (Ssl::IcapPeerConnector may generate an ErrorState with a nil
>> request).
>>
>>    - Modifies the ACL peername to use the Secure ICAP server name as
>> value while connecting to an ICAP server. This is useful to make SSL
>> certificate  policies based on ICAP server name. However, this change is
>> undocumented until we decide whether a dedicated ACL would be better.
>>
>>
>> This is a Measurement Factory project.
>>
>
> Initial audit:
>
> * Watch for HERE macros in the new, changed or moved code. I see at
> least one being added in PeerConnector.cc

fixed



>
>
> in src/acl/FilledChecklist.h:
>
> * please use an SBuf for dst_peer_name
>   - that will also prevent memory leaks in
> Ssl::IcapPeerConnector::initializeSsl().

ok.


>
> in src/adaptation/ServiceConfig.cc:
>
> * the new "ssl" option needs some polishing.
>   - for the dependency WARNING it should have:
> debugs(3, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: ... ICAP service
> option ignored.");
>   - since this is all new code please use "tls-" as the TLS/SSL options
> prefix.

OK
I am not documenting "tls-" prefix of the options in cf.data.pre.
But it works.

>
>
> in src/cf.data.pre:
> * the new securtiy options section title should have s/HTTPS/ICAPS/

OK.


>
>
> in src/adaptation/icap/ServiceRep.cc:
>
> * please create/use #define DEFAULT_ICAP_PORT and DEFAULT_ICAPS_PORT
> instead of magic port numbers.
>
>

ok.

> in src/adaptation/icap/ServiceRep.h:
>
> * please use Security::ContextPointer instead of SSL_CTX* for sslContext.
>   - and it can go outside the USE_OPENSSL wrapper

ok

>
>
> in src/adaptation/icap/Xaction.cc:
>
> * Adaptation::Icap::Xaction::noteCommClosed() does not need to wrap
> securer use with USE_OPENSSL.

fixed.


>
>
> in src/err_detail_type.h:
> * whats with the change to ERR_DETAIL_REDIRECTOR_TIMEDOUT ?
>    - if thats a bug-fix you found along the way it should go in separate
> for backporting.

Yes it is a bug.
I committed as separate patch. It is a trunk only bug.


>
>
> NOTE: I've not done much audit on the PeerConnector changes, my brain is
> too fuzzy right now. Though I am liking the class split.
>
>
> Amos
> _______________________________________________
> squid-dev mailing list
> squid-dev at lists.squid-cache.org
> http://lists.squid-cache.org/listinfo/squid-dev
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Secure-ICAP-t5.patch
Type: text/x-patch
Size: 103684 bytes
Desc: not available
URL: <http://lists.squid-cache.org/pipermail/squid-dev/attachments/20150423/957cde71/attachment-0001.bin>


More information about the squid-dev mailing list