[squid-dev] [RFC] Secure ICAP

Amos Jeffries squid3 at treenet.co.nz
Wed Feb 4 02:02:16 UTC 2015


I've been expecting this to come up for a while now, but had hoped the
crypto generalization would be a bit further along. Oh well.

My plan for the Crypto-NG / libsecurity work already in audit was to
followup with a Security::Encryptor AsyncJob that could be passed the
Comm::Connection object from a newely opened connection plus the
Security::PeerOptions from squid.conf and initiate TLS/SSL on the
connection.

That model is reusable for cache_peer, DIRECT connections, ICAP, and any
other protocols which use the X-over-TLS protocol layering. Without any
major changes to the existing code - we just update the appropriate Comm
callback to kick off the new Security::Encryptor job once the server FD
is opened.

I would like to push that update forward rather than anyone writing
another protocol-specific connection setup pathway. A good chunk of the
preparation work is already done, so the time to completion would also
be faster than a new project.

Amos


On 4/02/2015 9:52 a.m., Alex Rousskov wrote:
> Hello,
> 
>     We would like to add support for "Secure ICAP" -- ICAP services that
> require SSL/TLS encryption for transport connections. Some other popular
> proxies support that feature already, I have seen a trickle of admin
> requests for it, and the feature often becomes essential when filtering
> bumped traffic using external ICAP services (to preserve the overall
> security of the entire message delivery chain).
> 
> Today, it is possible to emulate Secure ICAP using connection wrappers
> like stunnel. Needless to say, that workaround is not a production-
> quality solution.
> 
> 
> I think Secure ICAP can use configuration knobs and server validation
> logic already implemented for secure HTTP peers (the cache_peer
> directive with an ssl option).
> 
> To mark an ICAP service as secure in squid.conf, we can use an "icaps"
> service URI scheme. The industry is using "secure ICAP" term for this
> feature,  but "icaps" seems more appropriate/standard for a scheme name
> compared to "sicap".
> 
> 
> We will not support dynamic "upgrades" from plain to secure ICAP
> connections because:
> 
> * there are no ICAP servers that support that (AFAIK);
> * there are no ICAP clients that support that (AFAIK);
> * such support does not seem to be needed in practice given a rather
> tight/long-term bonding between a proxy and an ICAP service (unlike a
> relationship between an HTTP client and an origin server);
> * such support can be added later, if needed, without redoing much of
> the proposed work.
> 
> I also do not anticipate changes to the existing ICAP service
> _selection_ configuration and related features, implementation of the
> ICAP protocol itself, and eCAP.
> 
> 
> If there are any objections to adding Secure ICAP support or high-level
> suggestions regarding implementation, please let me know!
> 
> 
> Thank you,
> 
> Alex.
> _______________________________________________
> squid-dev mailing list
> squid-dev at lists.squid-cache.org
> http://lists.squid-cache.org/listinfo/squid-dev
> 



More information about the squid-dev mailing list