]> git.ipfire.org Git - thirdparty/squid.git/blame - doc/release-notes/release-4.sgml
Docs: Release Notes update for 4.0
[thirdparty/squid.git] / doc / release-notes / release-4.sgml
CommitLineData
4d0832d7
AJ
1<!doctype linuxdoc system>
2<article>
183b876f 3<title>Squid 4.0.0 release notes</title>
4d0832d7
AJ
4<author>Squid Developers</author>
5
6<abstract>
183b876f 7This document contains the release notes for version 4 of Squid.
4d0832d7
AJ
8Squid is a WWW Cache application developed by the National Laboratory
9for Applied Network Research and members of the Web Caching community.
10</abstract>
11
12<toc>
13
14<sect>Notice
4dd2c9d6 15<p>The Squid Team are pleased to announce the release of Squid-4.0.0 for testing.
4d0832d7 16
183b876f 17This new release is available for download from <url url="http://www.squid-cache.org/Versions/v4/"> or the
71f0186a 18 <url url="http://www.squid-cache.org/Download/http-mirrors.html" name="mirrors">.
4d0832d7
AJ
19
20<p>While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
21
22<p>We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/BugReporting">
23 for how to submit a report with a stack trace.
24
25<sect1>Known issues
4dd2c9d6 26<p>Although this release is deemed good enough for use in many setups, please note the existence of
183b876f 27<url url="http://bugs.squid-cache.org/buglist.cgi?query_format=advanced&amp;product=Squid&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;version=4" name="open bugs against Squid-4">.
4d0832d7 28
4dd2c9d6
AJ
29<p>This release addsa dependency on C++11 support in any cmpiler used to build Squid.
30 As a result older C++03 -only and most C++0x compilers will no longer build successfully.
31 GCC 4.9+, Clang 3.5+ and ICC 12.0+ are known to have working C++11 support and are usable.
32 GCC-4.8 will also build for now despite lack of full C++11 support, but some future features may not be available.
33
183b876f 34<sect1>Changes since earlier releases of Squid-4
4d0832d7 35<p>
183b876f 36The Squid-4 change history can be <url url="http://www.squid-cache.org/Versions/v4/changesets/" name="viewed here">.
4d0832d7
AJ
37
38
39<sect>Major new features since Squid-3.5
183b876f 40<p>Squid 4 represents a new feature release above 3.5.
4d0832d7
AJ
41
42<p>The most important of these new features are:
43<itemize>
32fd6d8a 44 <item>Helper concurrency channels changes
9a258777 45 <item>Configurable helper queue size
0e5c14da 46 <item>SSL support removal
700e2961 47 <item>MSNT-multi-domain helper removal
4dd2c9d6
AJ
48 <item>Secure ICAP
49 <item>Elliptic Curve Diffie-Hellman (ECDH)
50 <item>Improved SMP support
4d0832d7
AJ
51</itemize>
52
53Most user-facing changes are reflected in squid.conf (see below).
54
55
6825b101
CT
56<sect1>Configurable helper queue size
57<p>The new queue-size=N option to helpers configuration, allows users
4dd2c9d6 58 to configure the maximum number of queued requests to busy helpers.
4d0832d7 59
32fd6d8a 60<sect1>Helper concurrency channels changes
4dd2c9d6
AJ
61<p>helper-mux.pl we have been distributing for the past few years to
62 encourage use of concurrency is no longer compatible with Squid. If
63 used it will spawn up to 2^64 helpers and DoS the Squid server.
64
65<p>Helpers utilizing arrays to handle fixed amounts of concurrency
66 channels MUST be re-written to use queues and capable of handling a
67 64-bit int as index or they will be vulnerable to buffer overrun and
68 arbitrary memory accesses.
32fd6d8a 69
4dd2c9d6
AJ
70<p>32-bit helpers need re-writing to handle the concurrency channel ID
71 as a 64-bit integer value. If not updated they will cause proxies to
72 return unexpected results or timeout once crossing the 32-bit wrap
73 boundary. Leading to undefined behaviour in the client HTTP traffic.
32fd6d8a 74
9a258777 75
0e5c14da 76<sect1>SSL support removal
9a258777 77<p>Details in <url url="https://tools.ietf.org/html/rfc6176" name="RFC 6176">
0e5c14da 78 and <url url="https://tools.ietf.org/html/rfc7568" name="RFC 7568">
9a258777
AJ
79
80<p>SSLv2 is not fit for purpose. Squid no longer supports being configured with
4dd2c9d6
AJ
81 any settings regarding this protocol. That includes settings manually disabling
82 its use since it is now forced to disable by default. Also settings enabling
83 various client/server workarounds specific to SSLv2 are removed.
9a258777 84
0e5c14da 85<p>SSLv3 is not fit for purpose. Squid still accepts configuration, but use
4dd2c9d6
AJ
86 is deprecated and will be removed entirely in a future version.
87 Squid default behavour is to follow the TLS built in negotiation mechanism
88 which prefers the latest TLS version. But also to accept downgrades to SSLv3.
89 Use <em>tls-options=NO_SSLv3</em> to disable SSLv3 support completely.
0e5c14da 90
4dd2c9d6
AJ
91<p>A new option <em>tls-min-version=1.N</em> is added in place of <em>sslversion=</em>
92 to configure the minimum version the TLS negotiation will allow to be used
93 when an old TLS version is requested by the remote endpoint.
9a258777 94
8f0e29d2 95
4dd2c9d6 96<sect1>MSNT-multi-domain helper removal
b0ab4ab3
AJ
97<p>The <em>basic_msnt_multi_domain_auth</em> helper has been removed. The
98 <em>basic_smb_lm_auth</em> helper performs the same actions without extra
99 Perl and Samba dependencies.
4d0832d7
AJ
100
101
4dd2c9d6
AJ
102<sect1>Secure ICAP
103<p>ICAP services can now be used over TLS connections.
104
105<p>To mark an ICAP service as secure, use an <em>icaps://</em> service URI scheme when
106 listing your service via an icap_service directive. The industry is using a
107 <q>Secure ICAP</q> term, and Squid follows that convention, but <em>icaps</em> seems more
108 appropriate for a <u>scheme</u> name.
109
110<p>Squid uses <em>port 11344</em> for Secure ICAP by default, following another popular
111 proxy convention. The old 1344 default for plain ICAP ports has not changed.
112
113
114<sect1>Elliptic Curve Diffie-Hellman (ECDH)
115<p>All listening port which supported Diffie-Hellman key exchange are now updated
116 to support Elliptic Curve configuration which allows for forward secrecy with
117 better performance than traditional ephemeral Diffie-Hellman.
118
119<p>The http(s)_port <em>dhparams=</em> option is replaced with <em>tls-dh=</em> that
120 takes an optional curve name as well as filename for curve parameters. The new
121 option configured without a curve name uses the traditional ephemeral DH.
122
123<p>A new <em>options=SINGLE_ECDH_USE</em> parameter is added to enable ephemeral
124 key exchanges for Elliptic Curve DH.
125
126
127<sect1>Improved SMP support
128<p>Use of C++11 atomic operations instead of GNU atomics allows a wider range of
129 operating systems and compilers to build Squid SMP and multi-process features.
130 However this does require a C++11 or C++0x compiler with a recent version of
131 the C++ standard library.
132
133<p>IpcIo and Mmapped disk I/O modules are now auto-detected properly which
134 enables Rock storage on more systems by default than previously.
135
136
4d0832d7
AJ
137<sect>Changes to squid.conf since Squid-3.5
138<p>
139There have been changes to Squid's configuration file since Squid-3.5.
140
141This section gives a thorough account of those changes in three categories:
142
143<itemize>
144 <item><ref id="newtags" name="New tags">
145 <item><ref id="modifiedtags" name="Changes to existing tags">
146 <item><ref id="removedtags" name="Removed tags">
147</itemize>
148<p>
149
150<sect1>New tags<label id="newtags">
151<p>
152<descrip>
7e62a74f
AJ
153 <tag>tls_outgoing_options</tag>
154 <p>New tag to define TLS security context options for outgoing
155 connections. For example to HTTPS servers.
4d0832d7 156
ff5d59eb
AJ
157 <tag>url_rewrite_timeout</tag>
158 <p>Squid times active requests to redirector. This option sets
159 the timeout value and the Squid reaction to a timed out
160 request.
161
4d0832d7
AJ
162</descrip>
163
164<sect1>Changes to existing tags<label id="modifiedtags">
165<p>
166<descrip>
9a258777
AJ
167 <tag>auth_param</tag>
168 <p>New parameter <em>queue-size=</em> to set the maximum number
169 of queued requests.
170
171 <tag>cache_peer</tag>
1cc44095 172 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
0e5c14da
AJ
173 <p>All <em>ssloptions=</em> values for SSLv2 configuration or disabling
174 have been removed.
175 <p>Removed <em>sslversion=</em> option. Use <em>tls-options=</em> instead.
9a258777
AJ
176 <p>Manual squid.conf update may be required on upgrade.
177
183b876f 178 <tag>external_acl_type</tag>
9a258777
AJ
179 <p>New parameter <em>queue-size=</em> to set the maximum number
180 of queued requests.
181
182 <tag>http_port</tag>
0e5c14da
AJ
183 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
184 <p>All <em>option=</em> values for SSLv2 configuration or disabling
185 have been removed.
186 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
4dd2c9d6
AJ
187 <p>New <em>options=SINGLE_ECDH_USE</em> parameter to enable ephemeral
188 ECDH key exchange.
189 <p>Deprecated <em>dhparams=</em> option. Use <em>tls-dh=</em> instead.
190 The new option allows to optionally specify an elliptic curve for
191 ephemeral ECDH by adding <em>curve-name:</em> in front of the
192 parameter file name.
9a258777
AJ
193 <p>Manual squid.conf update may be required on upgrade.
194
195 <tag>https_port</tag>
0e5c14da 196 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
1cc44095 197 <p>All <em>options=</em> values for SSLv2
9a258777 198 configuration or disabling have been removed.
0e5c14da 199 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
54fbe371
PM
200 <p>New <em>options=SINGLE_ECDH_USE</em> parameter to enable ephemeral
201 ECDH key exchange.
202 <p>Deprecated <em>dhparams=</em> option. Use <em>tls-dh=</em> instead.
203 The new option allows to optionally specify an elliptic curve for
204 ephemeral ECDH by adding <em>curve-name:</em> in front of the
205 parameter file name.
9a258777
AJ
206 <p>Manual squid.conf update may be required on upgrade.
207
4dd2c9d6
AJ
208 <tag>icap_service</tag>
209 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
210 servers on port 11344.
211 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
212 <p>New <em>tls-key=</em> option to set TLS private key matching the client
213 certificate used.
214 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
215 on server connections.
216 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
217 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
218 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
219 <p>New <em>tls-cafile=</em> option to set a file with additional CA
220 certificate(s) to verify the server certificate.
221 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
222 server certificate.
223 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
224
064679ea
AJ
225 <tag>refresh_pattern</tag>
226 <p>Removed <em>ignore-auth</em>. Its commonly desired behaviour is
227 performed by default with correct HTTP/1.1 revalidation.
228 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
229 directives can be used to prevent objects from caching.
230
9a258777
AJ
231 <tag>sslcrtd_children</tag>
232 <p>New parameter <em>queue-size=</em> to set the maximum number
233 of queued requests.
234
235 <tag>sslcrtvalidator_children</tag>
236 <p>New parameter <em>queue-size=</em> to set the maximum number
237 of queued requests.
6825b101 238
183b876f 239 <tag>url_rewrite_children</tag>
9a258777
AJ
240 <p>New parameter <em>queue-size=</em> to set the maximum number
241 of queued requests.
4d0832d7
AJ
242
243</descrip>
244
245<sect1>Removed tags<label id="removedtags">
246<p>
247<descrip>
f1a5d071
AJ
248 <tag>cache_peer_domain</tag>
249 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
250 in the access control list to restrict domains requested.
251
d94cbaa8
AJ
252 <tag>refresh_pattern</tag>
253 <p>Option <em>ignore-auth</em> removed. Its original intent was
254 to improve caching. HTTP/1.1 permits caching of authenticated
255 messages under conditions which Squid does check for and obey.
4d0832d7 256
7e62a74f
AJ
257 <tag>sslproxy_cafile</tag>
258 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
259
260 <tag>sslproxy_capath</tag>
261 <p>Replaced by <em>tls_outgoing_options capath=</em>.
262
263 <tag>sslproxy_cipher</tag>
264 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
265
266 <tag>sslproxy_client_certificate</tag>
267 <p>Replaced by <em>tls_outgoing_options cert=</em>.
268
269 <tag>sslproxy_client_key</tag>
270 <p>Replaced by <em>tls_outgoing_options key=</em>.
271
272 <tag>sslproxy_flags</tag>
273 <p>Replaced by <em>tls_outgoing_options flags=</em>.
274
275 <tag>sslproxy_options</tag>
276 <p>Replaced by <em>tls_outgoing_options options=</em>.
1cc44095
AJ
277 <p>All values for SSLv2 configuration or disabling have been removed.
278 <p>Manual squid.conf update may be required on upgrade.
7e62a74f
AJ
279
280 <tag>sslproxy_version</tag>
1cc44095
AJ
281 <p>Replaced by <em>tls_outgoing_options options=</em>.
282 <p>All values for SSLv2 configuration or disabling have been removed.
283 <p>Manual squid.conf update may be required on upgrade.
4d0832d7
AJ
284
285</descrip>
286
287
288<sect>Changes to ./configure options since Squid-3.5
289<p>
290There have been some changes to Squid's build configuration since Squid-3.5.
291
292This section gives an account of those changes in three categories:
293
294<itemize>
295 <item><ref id="newoptions" name="New options">
296 <item><ref id="modifiedoptions" name="Changes to existing options">
297 <item><ref id="removedoptions" name="Removed options">
298</itemize>
299
300
301<sect1>New options<label id="newoptions">
302<p>
303<descrip>
304
305</descrip>
306
307<sect1>Changes to existing options<label id="modifiedoptions">
308<p>
309<descrip>
700e2961
AJ
310 <tag>--enable-auth-basic</tag>
311 <p>The <em>MSNT-multi-domain</em> helper has been removed.
4d0832d7 312
4dd2c9d6
AJ
313 <tag>--enable-diskio</tag>
314 <p>Auto-detection of SMP related modules has been fixed to
315 actually auto-detect them without configuring the module
316 list manually.
317
4d0832d7
AJ
318</descrip>
319</p>
320
321<sect1>Removed options<label id="removedoptions">
322<p>
323<descrip>
324
325</descrip>
326
327
328<sect>Regressions since Squid-2.7
329
183b876f 330<p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
4d0832d7
AJ
331
332<p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
333
334<sect1>Missing squid.conf options available in Squid-2.7
335<p>
336<descrip>
337 <tag>broken_vary_encoding</tag>
338 <p>Not yet ported from 2.6
339
340 <tag>cache_peer</tag>
341 <p><em>monitorinterval=</em> not yet ported from 2.6
342 <p><em>monitorsize=</em> not yet ported from 2.6
343 <p><em>monitortimeout=</em> not yet ported from 2.6
344 <p><em>monitorurl=</em> not yet ported from 2.6
345
346 <tag>cache_vary</tag>
347 <p>Not yet ported from 2.6
348
349 <tag>error_map</tag>
350 <p>Not yet ported from 2.6
351
352 <tag>external_refresh_check</tag>
353 <p>Not yet ported from 2.7
354
355 <tag>location_rewrite_access</tag>
356 <p>Not yet ported from 2.6
357
358 <tag>location_rewrite_children</tag>
359 <p>Not yet ported from 2.6
360
361 <tag>location_rewrite_concurrency</tag>
362 <p>Not yet ported from 2.6
363
364 <tag>location_rewrite_program</tag>
365 <p>Not yet ported from 2.6
366
367 <tag>refresh_pattern</tag>
368 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
369 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
370 <p><em>negative-ttl=</em> not yet ported from 2.7
371
372 <tag>refresh_stale_hit</tag>
373 <p>Not yet ported from 2.7
374
375 <tag>update_headers</tag>
376 <p>Not yet ported from 2.7
377
378</descrip>
379
6a9396a7
AJ
380<sect>Copyright
381<p>
bde978a6 382Copyright (C) 1996-2015 The Squid Software Foundation and contributors
6a9396a7
AJ
383<p>
384Squid software is distributed under GPLv2+ license and includes
385contributions from numerous individuals and organizations.
386Please see the COPYING and CONTRIBUTORS files for details.
387
4d0832d7 388</article>