]> git.ipfire.org Git - thirdparty/squid.git/blob - doc/release-notes/release-4.sgml
Docs: fix typo in rev.14521
[thirdparty/squid.git] / doc / release-notes / release-4.sgml
1 <!doctype linuxdoc system>
2 <article>
3 <title>Squid 4.0.10 release notes</title>
4 <author>Squid Developers</author>
5
6 <abstract>
7 This document contains the release notes for version 4 of Squid.
8 Squid is a WWW Cache application developed by the National Laboratory
9 for Applied Network Research and members of the Web Caching community.
10 </abstract>
11
12 <toc>
13
14 <sect>Notice
15 <p>The Squid Team are pleased to announce the release of Squid-4.0.10 for testing.
16
17 This new release is available for download from <url url="http://www.squid-cache.org/Versions/v4/"> or the
18 <url url="http://www.squid-cache.org/Download/http-mirrors.html" name="mirrors">.
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
26 <p>Although this release is deemed good enough for use in many setups, please note the existence of
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">.
28
29 <p>This release adds a dependency on C++11 support in any compiler 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+ and Clang 3.5+ 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
34 <sect1>Changes since earlier releases of Squid-4
35 <p>
36 The Squid-4 change history can be <url url="http://www.squid-cache.org/Versions/v4/changesets/" name="viewed here">.
37
38
39 <sect>Major new features since Squid-3.5
40 <p>Squid 4 represents a new feature release above 3.5.
41
42 <p>The most important of these new features are:
43 <itemize>
44 <item>Configurable helper queue size
45 <item>Helper concurrency channels changes
46 <item>SSL support removal
47 <item>Helper Binary Changes
48 <item>Secure ICAP
49 <item>Improved SMP support
50 <item>Improved process management
51 </itemize>
52
53 Most user-facing changes are reflected in squid.conf (see below).
54
55
56 <sect1>Configurable helper queue size
57 <p>The new queue-size=N option to helpers configuration, allows users
58 to configure the maximum number of queued requests to busy helpers.
59
60 <sect1>Helper concurrency channels changes
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.
69
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.
74
75
76 <sect1>SSL support removal
77 <p>Details in <url url="https://tools.ietf.org/html/rfc6176" name="RFC 6176">
78 and <url url="https://tools.ietf.org/html/rfc7568" name="RFC 7568">
79
80 <p>SSLv2 is not fit for purpose. Squid no longer supports being configured with
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.
84
85 <p>SSLv3 is not fit for purpose. Squid still accepts configuration, but use
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.
90
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.
94
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
102
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
108 <p>The <em>cert_valid.pl</em> testing helper has been renamed to
109 <em>security_fake_certverify</em>, reflecting the Squid helper naming schema
110 and that it does not actually perform any certificate checks.
111
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
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
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.
127
128
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
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.
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
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
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
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
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.
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.
170
171
172 <sect>Changes to squid.conf since Squid-3.5
173 <p>
174 There have been changes to Squid's configuration file since Squid-3.5.
175
176 This 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>
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
192 <tag>on_unsupported_protocol</tag>
193 <p>New directive to set the action performed when encountering strange
194 protocol requests at the beginning of an accepted TCP connection.
195
196 <tag>reply_header_add</tag>
197 <p>New directive to add header fields to outgoing HTTP responses to
198 the client.
199
200 <tag>request_start_timeout</tag>
201 <p>New directive controlling how long Squid waits for the first request
202 bytes to arrive after initial connection establishment by a client.
203
204 <tag>server_pconn_for_nonretriable</tag>
205 <p>New directive to provide fine-grained control over persistent connection
206 reuse when forwarding HTTP requests that Squid cannot retry. It is useful
207 in environments where opening new connections is very expensive
208 and race conditions associated with persistent connections are very rare
209 and/or only cause minor problems.
210
211 <tag>shared_memory_locking</tag>
212 <p>New directive to ensure shared memory is all available immediately
213 on startup. Protects against SIGBUS errors, but delays startup.
214
215 <tag>tls_outgoing_options</tag>
216 <p>New directive to define TLS security context options for outgoing
217 connections. For example to HTTPS servers.
218
219 <tag>url_rewrite_timeout</tag>
220 <p>Squid times active requests to redirector. This option sets
221 the timeout value and the Squid reaction to a timed out
222 request.
223
224 </descrip>
225
226 <sect1>Changes to existing tags<label id="modifiedtags">
227 <p>
228 <descrip>
229 <tag>acl</tag>
230 <p>New <em>-m</em> flag for <em>note</em> ACL to match substrings.
231
232 <tag>auth_param</tag>
233 <p>New parameter <em>queue-size=</em> to set the maximum number
234 of queued requests.
235
236 <tag>cache_peer</tag>
237 <p>New option <em>auth-no-keytab</em> to let GSSAPI implementation determine
238 which Kerberos credentials to use, instead of specifying a keytab.
239 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
240 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
241 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
242 <p>All <em>ssloptions=</em> values for SSLv2 configuration or disabling
243 have been removed.
244 <p>Removed <em>sslversion=</em> option. Use <em>tls-options=</em> instead.
245 <p>Manual squid.conf update may be required on upgrade.
246 <p>Replaced <em>sslcafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
247
248 <tag>external_acl_type</tag>
249 <p>New parameter <em>queue-size=</em> to set the maximum number
250 of queued requests.
251 <p>Format field updated to accept any logformat %macro code.
252
253 <tag>http_port</tag>
254 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
255 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
256 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
257 <p>All <em>option=</em> values for SSLv2 configuration or disabling
258 have been removed.
259 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
260 <p>Manual squid.conf update may be required on upgrade.
261 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
262 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
263 the default is also changed to OFF.
264
265 <tag>https_port</tag>
266 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
267 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
268 the default is also changed to OFF.
269 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
270 <p>All <em>options=</em> values for SSLv2
271 configuration or disabling have been removed.
272 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
273 <p>Manual squid.conf update may be required on upgrade.
274 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
275
276 <tag>icap_service</tag>
277 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
278 servers on port 11344.
279 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
280 <p>New <em>tls-key=</em> option to set TLS private key matching the client
281 certificate used.
282 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
283 on server connections.
284 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
285 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
286 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
287 <p>New <em>tls-cafile=</em> option to set a file with additional CA
288 certificate(s) to verify the server certificate.
289 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
290 server certificate.
291 <p>New <em>tls-default-ca</em> option to use the system Trusted CAs to
292 verify the server certificate.
293 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
294
295 <tag>logformat</tag>
296 <p>New code <em>%ssl::&lt;cert_errors</em> to display server
297 certificate errors.
298 <p>New code <em>%ssl::&gt;negotiated_version</em> to display
299 negotiated TLS version of the client connection.
300 <p>New code <em>%ssl::&lt;negotiated_version</em> to display
301 negotiated TLS version of the last server or peer connection.
302 <p>New code <em>%ssl::&gt;received_hello_version</em> to display the
303 TLS version of the Hello message received from TLS client.
304 <p>New code <em>%ssl::&lt;received_hello_version</em> to display the
305 TLS version of the Hello message received from TLS server.
306 <p>New code <em>%ssl::&gt;received_supported_version</em> to display
307 the maximum TLS version supported by the TLS client.
308 <p>New code <em>%ssl::&lt;received_supported_version</em> to display
309 the maximum TLS version supported by the TLS server.
310 <p>New code <em>%ssl::&gt;negotiated_cipher</em> to display the
311 negotiated cipher of the client connection.
312 <p>New code <em>%ssl::&lt;negotiated_cipher</em> to display the
313 negotiated cipher of the last server or peer connection.
314
315 <tag>pid_filename</tag>
316 <p>Default value now based on squid -n command line parameter.
317
318 <tag>refresh_pattern</tag>
319 <p>Removed option <em>ignore-auth</em>. Its commonly desired behaviour
320 is performed by default with correct HTTP/1.1 revalidation.
321 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
322 directives (cache, store_miss) can be used to prevent objects from
323 caching.
324
325 <tag>sslcrtd_children</tag>
326 <p>New parameter <em>queue-size=</em> to set the maximum number
327 of queued requests.
328
329 <tag>sslcrtvalidator_children</tag>
330 <p>New parameter <em>queue-size=</em> to set the maximum number
331 of queued requests.
332
333 <tag>url_rewrite_children</tag>
334 <p>New parameter <em>queue-size=</em> to set the maximum number
335 of queued requests.
336
337 </descrip>
338
339 <sect1>Removed tags<label id="removedtags">
340 <p>
341 <descrip>
342 <tag>cache_peer_domain</tag>
343 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
344 in the access control list to restrict domains requested.
345
346 <tag>ie_refresh</tag>
347 <p>Removed. MSIE 3.x, 4.x, 5.0 and 5.01 are no longer popular browsers.
348
349 <tag>sslproxy_cafile</tag>
350 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
351 Which now takes multiple entries.
352
353 <tag>sslproxy_capath</tag>
354 <p>Replaced by <em>tls_outgoing_options capath=</em>.
355
356 <tag>sslproxy_cipher</tag>
357 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
358
359 <tag>sslproxy_client_certificate</tag>
360 <p>Replaced by <em>tls_outgoing_options cert=</em>.
361
362 <tag>sslproxy_client_key</tag>
363 <p>Replaced by <em>tls_outgoing_options key=</em>.
364
365 <tag>sslproxy_flags</tag>
366 <p>Replaced by <em>tls_outgoing_options flags=</em>.
367
368 <tag>sslproxy_options</tag>
369 <p>Replaced by <em>tls_outgoing_options options=</em>.
370 <p>All values for SSLv2 configuration or disabling have been removed.
371 <p>Manual squid.conf update may be required on upgrade.
372
373 <tag>sslproxy_version</tag>
374 <p>Replaced by <em>tls_outgoing_options options=</em>.
375 <p>All values for SSLv2 configuration or disabling have been removed.
376 <p>Manual squid.conf update may be required on upgrade.
377
378 </descrip>
379
380
381 <sect>Changes to ./configure options since Squid-3.5
382 <p>
383 There have been some changes to Squid's build configuration since Squid-3.5.
384
385 This section gives an account of those changes in three categories:
386
387 <itemize>
388 <item><ref id="newoptions" name="New options">
389 <item><ref id="modifiedoptions" name="Changes to existing options">
390 <item><ref id="removedoptions" name="Removed options">
391 </itemize>
392
393
394 <sect1>New options<label id="newoptions">
395 <p>
396 <descrip>
397 <tag>--enable-security-cert-generators</tag>
398 <p>New option to control which TLS/SSL dynamic certificate generator
399 helpers are built and installed.
400 <p>Helper <em>ssl_crtd</em> has been renamed to <em>security_file_certgen</em>
401 and built with module name <em>file</em>. Requires <em>--with-openssl</em>.
402
403 <tag>--enable-security-cert-validators</tag>
404 <p>New option to control which TLS/SSL certificate validation
405 helpers are built and installed.
406 <p>One <em>fake</em> helper that does not actually perform any
407 certificate checks is provided for testing and as an example
408 for writing custom helpers.
409
410 </descrip>
411
412 <sect1>Changes to existing options<label id="modifiedoptions">
413 <p>
414 <descrip>
415 <tag>--enable-auth-basic</tag>
416 <p>The <em>MSNT-multi-domain</em> helper has been removed.
417 <p>The SMB LanMan helper <em>SMB_LM</em> is no longer built by default.
418 It needs to be explicitly listed to be built.
419
420 <tag>--enable-auth-ntlm</tag>
421 <p>The SMB LanMan helper is now built using <em>SMB_LM</em>
422 (was lower case <em>smb_lm</em>).
423 <p>The SMB LanMan helper <em>SMB_LM</em> is no longer built by default.
424 It needs to be explicitly listed to be built.
425
426 <tag>--enable-diskio</tag>
427 <p>Auto-detection of SMP related modules has been fixed to
428 actually auto-detect them without configuring the module
429 list manually.
430
431 </descrip>
432 </p>
433
434 <sect1>Removed options<label id="removedoptions">
435 <p>
436 <descrip>
437
438 </descrip>
439
440
441 <sect>Regressions since Squid-2.7
442
443 <p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
444
445 <p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
446
447 <sect1>Missing squid.conf options available in Squid-2.7
448 <p>
449 <descrip>
450 <tag>broken_vary_encoding</tag>
451 <p>Not yet ported from 2.6
452
453 <tag>cache_peer</tag>
454 <p><em>monitorinterval=</em> not yet ported from 2.6
455 <p><em>monitorsize=</em> not yet ported from 2.6
456 <p><em>monitortimeout=</em> not yet ported from 2.6
457 <p><em>monitorurl=</em> not yet ported from 2.6
458
459 <tag>cache_vary</tag>
460 <p>Not yet ported from 2.6
461
462 <tag>error_map</tag>
463 <p>Not yet ported from 2.6
464
465 <tag>external_refresh_check</tag>
466 <p>Not yet ported from 2.7
467
468 <tag>location_rewrite_access</tag>
469 <p>Not yet ported from 2.6
470
471 <tag>location_rewrite_children</tag>
472 <p>Not yet ported from 2.6
473
474 <tag>location_rewrite_concurrency</tag>
475 <p>Not yet ported from 2.6
476
477 <tag>location_rewrite_program</tag>
478 <p>Not yet ported from 2.6
479
480 <tag>refresh_pattern</tag>
481 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
482 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
483 <p><em>negative-ttl=</em> not yet ported from 2.7
484
485 <tag>refresh_stale_hit</tag>
486 <p>Not yet ported from 2.7
487
488 <tag>update_headers</tag>
489 <p>Not yet ported from 2.7
490
491 </descrip>
492
493 <sect>Copyright
494 <p>
495 Copyright (C) 1996-2016 The Squid Software Foundation and contributors
496 <p>
497 Squid software is distributed under GPLv2+ license and includes
498 contributions from numerous individuals and organizations.
499 Please see the COPYING and CONTRIBUTORS files for details.
500
501 </article>