]> git.ipfire.org Git - thirdparty/squid.git/blame - doc/release-notes/release-4.sgml
Fix crtv / certv typos
[thirdparty/squid.git] / doc / release-notes / release-4.sgml
CommitLineData
4d0832d7
AJ
1<!doctype linuxdoc system>
2<article>
78121f9a 3<title>Squid 4.0.4 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
78121f9a 15<p>The Squid Team are pleased to announce the release of Squid-4.0.4 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
e90ce3d1 47 <item>cert_valid.pl helper renamed
700e2961 48 <item>MSNT-multi-domain helper removal
4dd2c9d6 49 <item>Secure ICAP
4dd2c9d6 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
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
e90ce3d1
AJ
103<sect1>cert_valid.pl helper renamed
104<p>The <em>cert_valid.pl</em> testing helper has been renamed to
105 <em>security_fake_certv</em>, reflecting the Squid helper naming schema
106 and that it does not actually perform any certificate checks.
107
108<p>This helper is also now built and installed by default. It is written in Perl
109 so does not require OpenSSL dependencies for installation. But does use the
110 Perl OpenSSL crypto modules, so requires it for execution.
111
112
4dd2c9d6 113<sect1>MSNT-multi-domain helper removal
b0ab4ab3
AJ
114<p>The <em>basic_msnt_multi_domain_auth</em> helper has been removed. The
115 <em>basic_smb_lm_auth</em> helper performs the same actions without extra
116 Perl and Samba dependencies.
4d0832d7
AJ
117
118
4dd2c9d6
AJ
119<sect1>Secure ICAP
120<p>ICAP services can now be used over TLS connections.
121
122<p>To mark an ICAP service as secure, use an <em>icaps://</em> service URI scheme when
123 listing your service via an icap_service directive. The industry is using a
68bdae93
AJ
124 <em>Secure ICAP</em> term, and Squid follows that convention, but <em>icaps</em> seems more
125 appropriate for a <em>scheme</em> name.
4dd2c9d6
AJ
126
127<p>Squid uses <em>port 11344</em> for Secure ICAP by default, following another popular
128 proxy convention. The old 1344 default for plain ICAP ports has not changed.
129
130
4dd2c9d6
AJ
131<sect1>Improved SMP support
132<p>Use of C++11 atomic operations instead of GNU atomics allows a wider range of
133 operating systems and compilers to build Squid SMP and multi-process features.
134 However this does require a C++11 or C++0x compiler with a recent version of
135 the C++ standard library.
136
137<p>IpcIo and Mmapped disk I/O modules are now auto-detected properly which
138 enables Rock storage on more systems by default than previously.
139
140
4d0832d7
AJ
141<sect>Changes to squid.conf since Squid-3.5
142<p>
143There have been changes to Squid's configuration file since Squid-3.5.
144
145This section gives a thorough account of those changes in three categories:
146
147<itemize>
148 <item><ref id="newtags" name="New tags">
149 <item><ref id="modifiedtags" name="Changes to existing tags">
150 <item><ref id="removedtags" name="Removed tags">
151</itemize>
152<p>
153
154<sect1>New tags<label id="newtags">
155<p>
156<descrip>
7e62a74f 157 <tag>tls_outgoing_options</tag>
0461fde7 158 <p>New directive to define TLS security context options for outgoing
7e62a74f 159 connections. For example to HTTPS servers.
4d0832d7 160
ff5d59eb
AJ
161 <tag>url_rewrite_timeout</tag>
162 <p>Squid times active requests to redirector. This option sets
163 the timeout value and the Squid reaction to a timed out
164 request.
165
4d0832d7
AJ
166</descrip>
167
168<sect1>Changes to existing tags<label id="modifiedtags">
169<p>
170<descrip>
0461fde7
AJ
171 <tag>acl</tag>
172 <p>New <em>-m</em> flag for <em>note</em> ACL to match substrings.
173
9a258777
AJ
174 <tag>auth_param</tag>
175 <p>New parameter <em>queue-size=</em> to set the maximum number
176 of queued requests.
177
178 <tag>cache_peer</tag>
9825b398
AJ
179 <p>New option <em>auth-no-keytab</em> to let GSSAPI implementation determine
180 which Kerberos credentials to use, instead of specifying a keytab.
1cc44095 181 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 182 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 183 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
184 <p>All <em>ssloptions=</em> values for SSLv2 configuration or disabling
185 have been removed.
186 <p>Removed <em>sslversion=</em> option. Use <em>tls-options=</em> instead.
9a258777 187 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 188 <p>Replaced <em>sslcafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 189
183b876f 190 <tag>external_acl_type</tag>
9a258777
AJ
191 <p>New parameter <em>queue-size=</em> to set the maximum number
192 of queued requests.
1243ec71 193 <p>Format field updated to accept any logformat %macro code.
9a258777
AJ
194
195 <tag>http_port</tag>
0e5c14da 196 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 197 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 198 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
199 <p>All <em>option=</em> values for SSLv2 configuration or disabling
200 have been removed.
201 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 202 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 203 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
435c72b0
AJ
204 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
205 the default is also changed to OFF.
9a258777
AJ
206
207 <tag>https_port</tag>
0e5c14da 208 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0
AJ
209 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
210 the default is also changed to OFF.
b05d749d 211 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
1cc44095 212 <p>All <em>options=</em> values for SSLv2
9a258777 213 configuration or disabling have been removed.
0e5c14da 214 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 215 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 216 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 217
4dd2c9d6
AJ
218 <tag>icap_service</tag>
219 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
220 servers on port 11344.
221 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
222 <p>New <em>tls-key=</em> option to set TLS private key matching the client
223 certificate used.
224 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
225 on server connections.
226 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
227 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
228 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
229 <p>New <em>tls-cafile=</em> option to set a file with additional CA
230 certificate(s) to verify the server certificate.
231 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
232 server certificate.
435c72b0
AJ
233 <p>New <em>tls-default-ca</em> option to use the system Trusted CAs to
234 verify the server certificate.
4dd2c9d6
AJ
235 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
236
c28b9a0e 237 <tag>logformat</tag>
0461fde7
AJ
238 <p>New code <em>%ssl::&lt;cert_errors</em> to display server
239 certificate errors.
240 <p>New code <em>%ssl::&gt;negotiated_version</em> to display
241 negotiated TLS version of the client connection.
242 <p>New code <em>%ssl::&lt;negotiated_version</em> to display
243 negotiated TLS version of the last server or peer connection.
244 <p>New code <em>%ssl::&gt;received_hello_version</em> to display the
245 TLS version of the Hello message received from TLS client.
246 <p>New code <em>%ssl::&lt;received_hello_version</em> to display the
247 TLS version of the Hello message received from TLS server.
248 <p>New code <em>%ssl::&gt;received_supported_version</em> to display
249 the maximum TLS version supported by the TLS client.
250 <p>New code <em>%ssl::&lt;received_supported_version</em> to display
251 the maximum TLS version supported by the TLS server.
252 <p>New code <em>%ssl::&gt;negotiated_cipher</em> to display the
253 negotiated cipher of the client connection.
254 <p>New code <em>%ssl::&lt;negotiated_cipher</em> to display the
255 negotiated cipher of the last server or peer connection.
c28b9a0e
AJ
256
257 <tag>pid_filename</tag>
258 <p>Default value now based on squid -n command line parameter.
259
064679ea 260 <tag>refresh_pattern</tag>
1377f2b1
AJ
261 <p>Removed option <em>ignore-auth</em>. Its commonly desired behaviour
262 is performed by default with correct HTTP/1.1 revalidation.
064679ea 263 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
1377f2b1
AJ
264 directives (cache, store_miss) can be used to prevent objects from
265 caching.
064679ea 266
9a258777
AJ
267 <tag>sslcrtd_children</tag>
268 <p>New parameter <em>queue-size=</em> to set the maximum number
269 of queued requests.
270
271 <tag>sslcrtvalidator_children</tag>
272 <p>New parameter <em>queue-size=</em> to set the maximum number
273 of queued requests.
6825b101 274
183b876f 275 <tag>url_rewrite_children</tag>
9a258777
AJ
276 <p>New parameter <em>queue-size=</em> to set the maximum number
277 of queued requests.
4d0832d7
AJ
278
279</descrip>
280
281<sect1>Removed tags<label id="removedtags">
282<p>
283<descrip>
f1a5d071
AJ
284 <tag>cache_peer_domain</tag>
285 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
286 in the access control list to restrict domains requested.
287
7e62a74f
AJ
288 <tag>sslproxy_cafile</tag>
289 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
b0769ee3 290 Which now takes multiple entries.
7e62a74f
AJ
291
292 <tag>sslproxy_capath</tag>
293 <p>Replaced by <em>tls_outgoing_options capath=</em>.
294
295 <tag>sslproxy_cipher</tag>
296 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
297
298 <tag>sslproxy_client_certificate</tag>
299 <p>Replaced by <em>tls_outgoing_options cert=</em>.
300
301 <tag>sslproxy_client_key</tag>
302 <p>Replaced by <em>tls_outgoing_options key=</em>.
303
304 <tag>sslproxy_flags</tag>
305 <p>Replaced by <em>tls_outgoing_options flags=</em>.
306
307 <tag>sslproxy_options</tag>
308 <p>Replaced by <em>tls_outgoing_options options=</em>.
1cc44095
AJ
309 <p>All values for SSLv2 configuration or disabling have been removed.
310 <p>Manual squid.conf update may be required on upgrade.
7e62a74f
AJ
311
312 <tag>sslproxy_version</tag>
1cc44095
AJ
313 <p>Replaced by <em>tls_outgoing_options options=</em>.
314 <p>All values for SSLv2 configuration or disabling have been removed.
315 <p>Manual squid.conf update may be required on upgrade.
4d0832d7
AJ
316
317</descrip>
318
319
320<sect>Changes to ./configure options since Squid-3.5
321<p>
322There have been some changes to Squid's build configuration since Squid-3.5.
323
324This section gives an account of those changes in three categories:
325
326<itemize>
327 <item><ref id="newoptions" name="New options">
328 <item><ref id="modifiedoptions" name="Changes to existing options">
329 <item><ref id="removedoptions" name="Removed options">
330</itemize>
331
332
333<sect1>New options<label id="newoptions">
334<p>
335<descrip>
e90ce3d1
AJ
336 <tag>--enable-security-certv-helpers</tag>
337 <p>New directive to control which TLS/SSL certificate verification helpers
338 are built and installed.
339 <p>One <em>fake</em> helper that it does not actually perform any
340 certificate checks is provided for testing and example code for writing
341 custom helpers.
4d0832d7
AJ
342
343</descrip>
344
345<sect1>Changes to existing options<label id="modifiedoptions">
346<p>
347<descrip>
700e2961
AJ
348 <tag>--enable-auth-basic</tag>
349 <p>The <em>MSNT-multi-domain</em> helper has been removed.
4d0832d7 350
4dd2c9d6
AJ
351 <tag>--enable-diskio</tag>
352 <p>Auto-detection of SMP related modules has been fixed to
353 actually auto-detect them without configuring the module
354 list manually.
355
4d0832d7
AJ
356</descrip>
357</p>
358
359<sect1>Removed options<label id="removedoptions">
360<p>
361<descrip>
362
363</descrip>
364
365
366<sect>Regressions since Squid-2.7
367
183b876f 368<p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
4d0832d7
AJ
369
370<p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
371
372<sect1>Missing squid.conf options available in Squid-2.7
373<p>
374<descrip>
375 <tag>broken_vary_encoding</tag>
376 <p>Not yet ported from 2.6
377
378 <tag>cache_peer</tag>
379 <p><em>monitorinterval=</em> not yet ported from 2.6
380 <p><em>monitorsize=</em> not yet ported from 2.6
381 <p><em>monitortimeout=</em> not yet ported from 2.6
382 <p><em>monitorurl=</em> not yet ported from 2.6
383
384 <tag>cache_vary</tag>
385 <p>Not yet ported from 2.6
386
387 <tag>error_map</tag>
388 <p>Not yet ported from 2.6
389
390 <tag>external_refresh_check</tag>
391 <p>Not yet ported from 2.7
392
393 <tag>location_rewrite_access</tag>
394 <p>Not yet ported from 2.6
395
396 <tag>location_rewrite_children</tag>
397 <p>Not yet ported from 2.6
398
399 <tag>location_rewrite_concurrency</tag>
400 <p>Not yet ported from 2.6
401
402 <tag>location_rewrite_program</tag>
403 <p>Not yet ported from 2.6
404
405 <tag>refresh_pattern</tag>
406 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
407 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
408 <p><em>negative-ttl=</em> not yet ported from 2.7
409
410 <tag>refresh_stale_hit</tag>
411 <p>Not yet ported from 2.7
412
413 <tag>update_headers</tag>
414 <p>Not yet ported from 2.7
415
416</descrip>
417
6a9396a7
AJ
418<sect>Copyright
419<p>
ef57eb7b 420Copyright (C) 1996-2016 The Squid Software Foundation and contributors
6a9396a7
AJ
421<p>
422Squid software is distributed under GPLv2+ license and includes
423contributions from numerous individuals and organizations.
424Please see the COPYING and CONTRIBUTORS files for details.
425
4d0832d7 426</article>