]> git.ipfire.org Git - thirdparty/squid.git/blame - doc/release-notes/release-4.sgml
SourceFormat Enforcement
[thirdparty/squid.git] / doc / release-notes / release-4.sgml
CommitLineData
4d0832d7
AJ
1<!doctype linuxdoc system>
2<article>
81bf66f8 3<title>Squid 4.0.7 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
81bf66f8 15<p>The Squid Team are pleased to announce the release of Squid-4.0.7 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
1377f2b1 29<p>This release adds a dependency on C++11 support in any compiler used to build Squid.
4dd2c9d6 30 As a result older C++03 -only and most C++0x compilers will no longer build successfully.
a9d17dfc 31 GCC 4.9+ and Clang 3.5+ are known to have working C++11 support and are usable.
4dd2c9d6
AJ
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>
9a258777 44 <item>Configurable helper queue size
1377f2b1 45 <item>Helper concurrency channels changes
0e5c14da 46 <item>SSL support removal
b817c20f 47 <item>Helper Binary Changes
4dd2c9d6 48 <item>Secure ICAP
4dd2c9d6 49 <item>Improved SMP support
fbcef294 50 <item>Improved process management
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
435c72b0
AJ
95<p>The system Trusted CAs are no longer used by default when verifying client
96 certificates. The <em>cafile=</em> option should be used instead to load
97 the specific CA which signed acceptible client certificates explicitly,
98 even if that CA is one of the system Trusted CAs.
99 The <em>tls-default-ca</em> option can be used to restore the old
100 behaviour explicitly if needed.
101
8f0e29d2 102
b817c20f
AJ
103<sect1>Helper Binary Changes
104<p>The <em>basic_msnt_multi_domain_auth</em> helper has been removed. The
105 <em>basic_smb_lm_auth</em> helper performs the same actions without extra
106 Perl and Samba dependencies.
107
e90ce3d1 108<p>The <em>cert_valid.pl</em> testing helper has been renamed to
bbf79f12 109 <em>security_fake_certverify</em>, reflecting the Squid helper naming schema
e90ce3d1
AJ
110 and that it does not actually perform any certificate checks.
111
8732ea9d
AJ
112<p>The <em>security_fake_certverify</em> helper is also now built and installed
113 by default. It is written in Perl so does not require OpenSSL dependencies
114 for installation. But does use the Perl Crypt::OpenSSL::X509 module for execution.
115 Building the helper can be controlled using the <em>--enable-security-cert-validators="fake"</em>
116 option.
117
cb0b3d63
AJ
118<p>The <em>ssl_crtd</em> helper has been renamed to <em>security_file_certgen</em>
119 and is now built and installed by default whenever OpenSSL support is enabled.
120 Building the helper can be controlled using the <em>--enable-security-cert-generators="file"</em>
121 option.
122 NOTE: The <em>--enable-ssl-crtd</em> option is still required to enable the
123 <em>sslcrtd_program</em> helper interface within Squid that uses the helper.
124
b817c20f
AJ
125<p>The <em>ntlm_smb_lm_auth</em> helper is now built using <em>--enable-auth-ntlm="SMB_LM"</em>.
126 Notice the upper case where it was previously a (wrongly) lower cased acronym.
4d0832d7
AJ
127
128
4dd2c9d6
AJ
129<sect1>Secure ICAP
130<p>ICAP services can now be used over TLS connections.
131
132<p>To mark an ICAP service as secure, use an <em>icaps://</em> service URI scheme when
133 listing your service via an icap_service directive. The industry is using a
68bdae93
AJ
134 <em>Secure ICAP</em> term, and Squid follows that convention, but <em>icaps</em> seems more
135 appropriate for a <em>scheme</em> name.
4dd2c9d6
AJ
136
137<p>Squid uses <em>port 11344</em> for Secure ICAP by default, following another popular
138 proxy convention. The old 1344 default for plain ICAP ports has not changed.
139
140
4dd2c9d6
AJ
141<sect1>Improved SMP support
142<p>Use of C++11 atomic operations instead of GNU atomics allows a wider range of
143 operating systems and compilers to build Squid SMP and multi-process features.
144 However this does require a C++11 or C++0x compiler with a recent version of
145 the C++ standard library.
146
147<p>IpcIo and Mmapped disk I/O modules are now auto-detected properly which
148 enables Rock storage on more systems by default than previously.
149
150
fbcef294
AJ
151<sect1>Improved process management
152<p>Squid is traditionally refered to as a daemon. But is actually a combination
153 of daemon and daemon manager processes. This has caused significant problems
154 integrating it with other third-party daemon managers.
155
156<p>The Squid process which places its PID into the squid.pid file has always
157 been the process to which control signals are sent. The manager process is
df200055
MM
158 now taking on signal handling instead of the main daemon process. Enabling
159 integration with daemon managers such as Upstart or systemd which assume the
fbcef294
AJ
160 process they initiated is the daemon with a PID to control.
161
162<p>The squid binary now has a new <em>--foreground</em> command line option
163 which prevents the process from exiting early while background workers
164 continue their processing. When run with this option Squid will now wait
165 for the worker(s) to finish before exiting. Unlike the old <em>-N</em> option
166 <em>--foreground</em> supports SMP workers and multi-process features.
df200055
MM
167 <em>--foreground</em> is particularly useful for use with <em>-z</em> (disk
168 cache structures creation), as it allows the caller to wait until Squid has
169 finished.
fbcef294
AJ
170
171
4d0832d7
AJ
172<sect>Changes to squid.conf since Squid-3.5
173<p>
174There have been changes to Squid's configuration file since Squid-3.5.
175
176This section gives a thorough account of those changes in three categories:
177
178<itemize>
179 <item><ref id="newtags" name="New tags">
180 <item><ref id="modifiedtags" name="Changes to existing tags">
181 <item><ref id="removedtags" name="Removed tags">
182</itemize>
183<p>
184
185<sect1>New tags<label id="newtags">
186<p>
187<descrip>
fbf7b67f
AJ
188 <tag>collapsed_forwarding_shared_entries_limit</tag>
189 <p>New directive to limit the size of a table used for sharing information
190 about collapsible entries among SMP workers.
191
cde8f31b
NH
192 <tag>reply_header_add</tag>
193 <p>New directive to add header fields to outgoing HTTP responses to
194 the client.
195
fbf7b67f
AJ
196 <tag>server_pconn_for_nonretriable</tag>
197 <p>New directive to provide fine-grained control over persistent connection
198 reuse when forwarding HTTP requests that Squid cannot retry. It is useful
199 in environments where opening new connections is very expensive
200 and race conditions associated with persistent connections are very rare
201 and/or only cause minor problems.
202
7e62a74f 203 <tag>tls_outgoing_options</tag>
0461fde7 204 <p>New directive to define TLS security context options for outgoing
7e62a74f 205 connections. For example to HTTPS servers.
4d0832d7 206
ff5d59eb
AJ
207 <tag>url_rewrite_timeout</tag>
208 <p>Squid times active requests to redirector. This option sets
209 the timeout value and the Squid reaction to a timed out
210 request.
211
4d0832d7
AJ
212</descrip>
213
214<sect1>Changes to existing tags<label id="modifiedtags">
215<p>
216<descrip>
0461fde7
AJ
217 <tag>acl</tag>
218 <p>New <em>-m</em> flag for <em>note</em> ACL to match substrings.
219
9a258777
AJ
220 <tag>auth_param</tag>
221 <p>New parameter <em>queue-size=</em> to set the maximum number
222 of queued requests.
223
224 <tag>cache_peer</tag>
9825b398
AJ
225 <p>New option <em>auth-no-keytab</em> to let GSSAPI implementation determine
226 which Kerberos credentials to use, instead of specifying a keytab.
1cc44095 227 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 228 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 229 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
230 <p>All <em>ssloptions=</em> values for SSLv2 configuration or disabling
231 have been removed.
232 <p>Removed <em>sslversion=</em> option. Use <em>tls-options=</em> instead.
9a258777 233 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 234 <p>Replaced <em>sslcafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 235
183b876f 236 <tag>external_acl_type</tag>
9a258777
AJ
237 <p>New parameter <em>queue-size=</em> to set the maximum number
238 of queued requests.
1243ec71 239 <p>Format field updated to accept any logformat %macro code.
9a258777
AJ
240
241 <tag>http_port</tag>
0e5c14da 242 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 243 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 244 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
245 <p>All <em>option=</em> values for SSLv2 configuration or disabling
246 have been removed.
247 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 248 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 249 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
435c72b0
AJ
250 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
251 the default is also changed to OFF.
9a258777
AJ
252
253 <tag>https_port</tag>
0e5c14da 254 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0
AJ
255 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
256 the default is also changed to OFF.
b05d749d 257 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
1cc44095 258 <p>All <em>options=</em> values for SSLv2
9a258777 259 configuration or disabling have been removed.
0e5c14da 260 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 261 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 262 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 263
4dd2c9d6
AJ
264 <tag>icap_service</tag>
265 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
266 servers on port 11344.
267 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
268 <p>New <em>tls-key=</em> option to set TLS private key matching the client
269 certificate used.
270 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
271 on server connections.
272 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
273 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
274 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
275 <p>New <em>tls-cafile=</em> option to set a file with additional CA
276 certificate(s) to verify the server certificate.
277 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
278 server certificate.
435c72b0
AJ
279 <p>New <em>tls-default-ca</em> option to use the system Trusted CAs to
280 verify the server certificate.
4dd2c9d6
AJ
281 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
282
c28b9a0e 283 <tag>logformat</tag>
0461fde7
AJ
284 <p>New code <em>%ssl::&lt;cert_errors</em> to display server
285 certificate errors.
286 <p>New code <em>%ssl::&gt;negotiated_version</em> to display
287 negotiated TLS version of the client connection.
288 <p>New code <em>%ssl::&lt;negotiated_version</em> to display
289 negotiated TLS version of the last server or peer connection.
290 <p>New code <em>%ssl::&gt;received_hello_version</em> to display the
291 TLS version of the Hello message received from TLS client.
292 <p>New code <em>%ssl::&lt;received_hello_version</em> to display the
293 TLS version of the Hello message received from TLS server.
294 <p>New code <em>%ssl::&gt;received_supported_version</em> to display
295 the maximum TLS version supported by the TLS client.
296 <p>New code <em>%ssl::&lt;received_supported_version</em> to display
297 the maximum TLS version supported by the TLS server.
298 <p>New code <em>%ssl::&gt;negotiated_cipher</em> to display the
299 negotiated cipher of the client connection.
300 <p>New code <em>%ssl::&lt;negotiated_cipher</em> to display the
301 negotiated cipher of the last server or peer connection.
c28b9a0e
AJ
302
303 <tag>pid_filename</tag>
304 <p>Default value now based on squid -n command line parameter.
305
064679ea 306 <tag>refresh_pattern</tag>
1377f2b1
AJ
307 <p>Removed option <em>ignore-auth</em>. Its commonly desired behaviour
308 is performed by default with correct HTTP/1.1 revalidation.
064679ea 309 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
1377f2b1
AJ
310 directives (cache, store_miss) can be used to prevent objects from
311 caching.
064679ea 312
9a258777
AJ
313 <tag>sslcrtd_children</tag>
314 <p>New parameter <em>queue-size=</em> to set the maximum number
315 of queued requests.
316
317 <tag>sslcrtvalidator_children</tag>
318 <p>New parameter <em>queue-size=</em> to set the maximum number
319 of queued requests.
6825b101 320
183b876f 321 <tag>url_rewrite_children</tag>
9a258777
AJ
322 <p>New parameter <em>queue-size=</em> to set the maximum number
323 of queued requests.
4d0832d7
AJ
324
325</descrip>
326
327<sect1>Removed tags<label id="removedtags">
328<p>
329<descrip>
f1a5d071
AJ
330 <tag>cache_peer_domain</tag>
331 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
332 in the access control list to restrict domains requested.
333
7e62a74f
AJ
334 <tag>sslproxy_cafile</tag>
335 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
b0769ee3 336 Which now takes multiple entries.
7e62a74f
AJ
337
338 <tag>sslproxy_capath</tag>
339 <p>Replaced by <em>tls_outgoing_options capath=</em>.
340
341 <tag>sslproxy_cipher</tag>
342 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
343
344 <tag>sslproxy_client_certificate</tag>
345 <p>Replaced by <em>tls_outgoing_options cert=</em>.
346
347 <tag>sslproxy_client_key</tag>
348 <p>Replaced by <em>tls_outgoing_options key=</em>.
349
350 <tag>sslproxy_flags</tag>
351 <p>Replaced by <em>tls_outgoing_options flags=</em>.
352
353 <tag>sslproxy_options</tag>
354 <p>Replaced by <em>tls_outgoing_options options=</em>.
1cc44095
AJ
355 <p>All values for SSLv2 configuration or disabling have been removed.
356 <p>Manual squid.conf update may be required on upgrade.
7e62a74f
AJ
357
358 <tag>sslproxy_version</tag>
1cc44095
AJ
359 <p>Replaced by <em>tls_outgoing_options options=</em>.
360 <p>All values for SSLv2 configuration or disabling have been removed.
361 <p>Manual squid.conf update may be required on upgrade.
4d0832d7
AJ
362
363</descrip>
364
365
366<sect>Changes to ./configure options since Squid-3.5
367<p>
368There have been some changes to Squid's build configuration since Squid-3.5.
369
370This section gives an account of those changes in three categories:
371
372<itemize>
373 <item><ref id="newoptions" name="New options">
374 <item><ref id="modifiedoptions" name="Changes to existing options">
375 <item><ref id="removedoptions" name="Removed options">
376</itemize>
377
378
379<sect1>New options<label id="newoptions">
380<p>
381<descrip>
cb0b3d63
AJ
382 <tag>--enable-security-cert-generators</tag>
383 <p>New option to control which TLS/SSL dynamic certificate generator
384 helpers are built and installed.
385 <p>Helper <em>ssl_crtd<em> has been renamed to <em>security_file_certgen</em>
386 and built with module name <em>file</em>. Requires <em>--with-openssl</em>.
387
8732ea9d 388 <tag>--enable-security-cert-validators</tag>
cb0b3d63 389 <p>New option to control which TLS/SSL certificate validation
40063c71
AJ
390 helpers are built and installed.
391 <p>One <em>fake</em> helper that does not actually perform any
392 certificate checks is provided for testing and as an example
393 for writing custom helpers.
4d0832d7
AJ
394
395</descrip>
396
397<sect1>Changes to existing options<label id="modifiedoptions">
398<p>
399<descrip>
700e2961
AJ
400 <tag>--enable-auth-basic</tag>
401 <p>The <em>MSNT-multi-domain</em> helper has been removed.
4d0832d7 402
b817c20f
AJ
403 <tag>--enable-auth-ntlm</tag>
404 <p>The SMB LanMan helper is now built using <em>SMB_LM</em>
405 (was lower case <em>smb_lm</em>).
406
4dd2c9d6
AJ
407 <tag>--enable-diskio</tag>
408 <p>Auto-detection of SMP related modules has been fixed to
409 actually auto-detect them without configuring the module
410 list manually.
411
4d0832d7
AJ
412</descrip>
413</p>
414
415<sect1>Removed options<label id="removedoptions">
416<p>
417<descrip>
418
419</descrip>
420
421
422<sect>Regressions since Squid-2.7
423
183b876f 424<p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
4d0832d7
AJ
425
426<p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
427
428<sect1>Missing squid.conf options available in Squid-2.7
429<p>
430<descrip>
431 <tag>broken_vary_encoding</tag>
432 <p>Not yet ported from 2.6
433
434 <tag>cache_peer</tag>
435 <p><em>monitorinterval=</em> not yet ported from 2.6
436 <p><em>monitorsize=</em> not yet ported from 2.6
437 <p><em>monitortimeout=</em> not yet ported from 2.6
438 <p><em>monitorurl=</em> not yet ported from 2.6
439
440 <tag>cache_vary</tag>
441 <p>Not yet ported from 2.6
442
443 <tag>error_map</tag>
444 <p>Not yet ported from 2.6
445
446 <tag>external_refresh_check</tag>
447 <p>Not yet ported from 2.7
448
449 <tag>location_rewrite_access</tag>
450 <p>Not yet ported from 2.6
451
452 <tag>location_rewrite_children</tag>
453 <p>Not yet ported from 2.6
454
455 <tag>location_rewrite_concurrency</tag>
456 <p>Not yet ported from 2.6
457
458 <tag>location_rewrite_program</tag>
459 <p>Not yet ported from 2.6
460
461 <tag>refresh_pattern</tag>
462 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
463 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
464 <p><em>negative-ttl=</em> not yet ported from 2.7
465
466 <tag>refresh_stale_hit</tag>
467 <p>Not yet ported from 2.7
468
469 <tag>update_headers</tag>
470 <p>Not yet ported from 2.7
471
472</descrip>
473
6a9396a7
AJ
474<sect>Copyright
475<p>
ef57eb7b 476Copyright (C) 1996-2016 The Squid Software Foundation and contributors
6a9396a7
AJ
477<p>
478Squid software is distributed under GPLv2+ license and includes
479contributions from numerous individuals and organizations.
480Please see the COPYING and CONTRIBUTORS files for details.
481
4d0832d7 482</article>