]> git.ipfire.org Git - thirdparty/squid.git/blame - doc/release-notes/release-4.sgml
Rename cert_valid.pl helper to security_fake_crtv
[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
700e2961 47 <item>MSNT-multi-domain helper removal
4dd2c9d6 48 <item>Secure ICAP
4dd2c9d6 49 <item>Improved SMP support
4d0832d7
AJ
50</itemize>
51
52Most user-facing changes are reflected in squid.conf (see below).
53
54
6825b101
CT
55<sect1>Configurable helper queue size
56<p>The new queue-size=N option to helpers configuration, allows users
4dd2c9d6 57 to configure the maximum number of queued requests to busy helpers.
4d0832d7 58
32fd6d8a 59<sect1>Helper concurrency channels changes
4dd2c9d6
AJ
60<p>helper-mux.pl we have been distributing for the past few years to
61 encourage use of concurrency is no longer compatible with Squid. If
62 used it will spawn up to 2^64 helpers and DoS the Squid server.
63
64<p>Helpers utilizing arrays to handle fixed amounts of concurrency
65 channels MUST be re-written to use queues and capable of handling a
66 64-bit int as index or they will be vulnerable to buffer overrun and
67 arbitrary memory accesses.
32fd6d8a 68
4dd2c9d6
AJ
69<p>32-bit helpers need re-writing to handle the concurrency channel ID
70 as a 64-bit integer value. If not updated they will cause proxies to
71 return unexpected results or timeout once crossing the 32-bit wrap
72 boundary. Leading to undefined behaviour in the client HTTP traffic.
32fd6d8a 73
9a258777 74
0e5c14da 75<sect1>SSL support removal
9a258777 76<p>Details in <url url="https://tools.ietf.org/html/rfc6176" name="RFC 6176">
0e5c14da 77 and <url url="https://tools.ietf.org/html/rfc7568" name="RFC 7568">
9a258777
AJ
78
79<p>SSLv2 is not fit for purpose. Squid no longer supports being configured with
4dd2c9d6
AJ
80 any settings regarding this protocol. That includes settings manually disabling
81 its use since it is now forced to disable by default. Also settings enabling
82 various client/server workarounds specific to SSLv2 are removed.
9a258777 83
0e5c14da 84<p>SSLv3 is not fit for purpose. Squid still accepts configuration, but use
4dd2c9d6
AJ
85 is deprecated and will be removed entirely in a future version.
86 Squid default behavour is to follow the TLS built in negotiation mechanism
87 which prefers the latest TLS version. But also to accept downgrades to SSLv3.
88 Use <em>tls-options=NO_SSLv3</em> to disable SSLv3 support completely.
0e5c14da 89
4dd2c9d6
AJ
90<p>A new option <em>tls-min-version=1.N</em> is added in place of <em>sslversion=</em>
91 to configure the minimum version the TLS negotiation will allow to be used
92 when an old TLS version is requested by the remote endpoint.
9a258777 93
435c72b0
AJ
94<p>The system Trusted CAs are no longer used by default when verifying client
95 certificates. The <em>cafile=</em> option should be used instead to load
96 the specific CA which signed acceptible client certificates explicitly,
97 even if that CA is one of the system Trusted CAs.
98 The <em>tls-default-ca</em> option can be used to restore the old
99 behaviour explicitly if needed.
100
8f0e29d2 101
4dd2c9d6 102<sect1>MSNT-multi-domain helper removal
b0ab4ab3
AJ
103<p>The <em>basic_msnt_multi_domain_auth</em> helper has been removed. The
104 <em>basic_smb_lm_auth</em> helper performs the same actions without extra
105 Perl and Samba dependencies.
4d0832d7
AJ
106
107
4dd2c9d6
AJ
108<sect1>Secure ICAP
109<p>ICAP services can now be used over TLS connections.
110
111<p>To mark an ICAP service as secure, use an <em>icaps://</em> service URI scheme when
112 listing your service via an icap_service directive. The industry is using a
68bdae93
AJ
113 <em>Secure ICAP</em> term, and Squid follows that convention, but <em>icaps</em> seems more
114 appropriate for a <em>scheme</em> name.
4dd2c9d6
AJ
115
116<p>Squid uses <em>port 11344</em> for Secure ICAP by default, following another popular
117 proxy convention. The old 1344 default for plain ICAP ports has not changed.
118
119
4dd2c9d6
AJ
120<sect1>Improved SMP support
121<p>Use of C++11 atomic operations instead of GNU atomics allows a wider range of
122 operating systems and compilers to build Squid SMP and multi-process features.
123 However this does require a C++11 or C++0x compiler with a recent version of
124 the C++ standard library.
125
126<p>IpcIo and Mmapped disk I/O modules are now auto-detected properly which
127 enables Rock storage on more systems by default than previously.
128
129
4d0832d7
AJ
130<sect>Changes to squid.conf since Squid-3.5
131<p>
132There have been changes to Squid's configuration file since Squid-3.5.
133
134This section gives a thorough account of those changes in three categories:
135
136<itemize>
137 <item><ref id="newtags" name="New tags">
138 <item><ref id="modifiedtags" name="Changes to existing tags">
139 <item><ref id="removedtags" name="Removed tags">
140</itemize>
141<p>
142
143<sect1>New tags<label id="newtags">
144<p>
145<descrip>
7e62a74f 146 <tag>tls_outgoing_options</tag>
0461fde7 147 <p>New directive to define TLS security context options for outgoing
7e62a74f 148 connections. For example to HTTPS servers.
4d0832d7 149
ff5d59eb
AJ
150 <tag>url_rewrite_timeout</tag>
151 <p>Squid times active requests to redirector. This option sets
152 the timeout value and the Squid reaction to a timed out
153 request.
154
4d0832d7
AJ
155</descrip>
156
157<sect1>Changes to existing tags<label id="modifiedtags">
158<p>
159<descrip>
0461fde7
AJ
160 <tag>acl</tag>
161 <p>New <em>-m</em> flag for <em>note</em> ACL to match substrings.
162
9a258777
AJ
163 <tag>auth_param</tag>
164 <p>New parameter <em>queue-size=</em> to set the maximum number
165 of queued requests.
166
167 <tag>cache_peer</tag>
9825b398
AJ
168 <p>New option <em>auth-no-keytab</em> to let GSSAPI implementation determine
169 which Kerberos credentials to use, instead of specifying a keytab.
1cc44095 170 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 171 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 172 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
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 176 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 177 <p>Replaced <em>sslcafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 178
183b876f 179 <tag>external_acl_type</tag>
9a258777
AJ
180 <p>New parameter <em>queue-size=</em> to set the maximum number
181 of queued requests.
1243ec71 182 <p>Format field updated to accept any logformat %macro code.
9a258777
AJ
183
184 <tag>http_port</tag>
0e5c14da 185 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 186 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 187 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
188 <p>All <em>option=</em> values for SSLv2 configuration or disabling
189 have been removed.
190 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 191 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 192 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
435c72b0
AJ
193 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
194 the default is also changed to OFF.
9a258777
AJ
195
196 <tag>https_port</tag>
0e5c14da 197 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0
AJ
198 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
199 the default is also changed to OFF.
b05d749d 200 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
1cc44095 201 <p>All <em>options=</em> values for SSLv2
9a258777 202 configuration or disabling have been removed.
0e5c14da 203 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 204 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 205 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 206
4dd2c9d6
AJ
207 <tag>icap_service</tag>
208 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
209 servers on port 11344.
210 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
211 <p>New <em>tls-key=</em> option to set TLS private key matching the client
212 certificate used.
213 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
214 on server connections.
215 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
216 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
217 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
218 <p>New <em>tls-cafile=</em> option to set a file with additional CA
219 certificate(s) to verify the server certificate.
220 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
221 server certificate.
435c72b0
AJ
222 <p>New <em>tls-default-ca</em> option to use the system Trusted CAs to
223 verify the server certificate.
4dd2c9d6
AJ
224 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
225
c28b9a0e 226 <tag>logformat</tag>
0461fde7
AJ
227 <p>New code <em>%ssl::&lt;cert_errors</em> to display server
228 certificate errors.
229 <p>New code <em>%ssl::&gt;negotiated_version</em> to display
230 negotiated TLS version of the client connection.
231 <p>New code <em>%ssl::&lt;negotiated_version</em> to display
232 negotiated TLS version of the last server or peer connection.
233 <p>New code <em>%ssl::&gt;received_hello_version</em> to display the
234 TLS version of the Hello message received from TLS client.
235 <p>New code <em>%ssl::&lt;received_hello_version</em> to display the
236 TLS version of the Hello message received from TLS server.
237 <p>New code <em>%ssl::&gt;received_supported_version</em> to display
238 the maximum TLS version supported by the TLS client.
239 <p>New code <em>%ssl::&lt;received_supported_version</em> to display
240 the maximum TLS version supported by the TLS server.
241 <p>New code <em>%ssl::&gt;negotiated_cipher</em> to display the
242 negotiated cipher of the client connection.
243 <p>New code <em>%ssl::&lt;negotiated_cipher</em> to display the
244 negotiated cipher of the last server or peer connection.
c28b9a0e
AJ
245
246 <tag>pid_filename</tag>
247 <p>Default value now based on squid -n command line parameter.
248
064679ea 249 <tag>refresh_pattern</tag>
1377f2b1
AJ
250 <p>Removed option <em>ignore-auth</em>. Its commonly desired behaviour
251 is performed by default with correct HTTP/1.1 revalidation.
064679ea 252 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
1377f2b1
AJ
253 directives (cache, store_miss) can be used to prevent objects from
254 caching.
064679ea 255
9a258777
AJ
256 <tag>sslcrtd_children</tag>
257 <p>New parameter <em>queue-size=</em> to set the maximum number
258 of queued requests.
259
260 <tag>sslcrtvalidator_children</tag>
261 <p>New parameter <em>queue-size=</em> to set the maximum number
262 of queued requests.
6825b101 263
183b876f 264 <tag>url_rewrite_children</tag>
9a258777
AJ
265 <p>New parameter <em>queue-size=</em> to set the maximum number
266 of queued requests.
4d0832d7
AJ
267
268</descrip>
269
270<sect1>Removed tags<label id="removedtags">
271<p>
272<descrip>
f1a5d071
AJ
273 <tag>cache_peer_domain</tag>
274 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
275 in the access control list to restrict domains requested.
276
7e62a74f
AJ
277 <tag>sslproxy_cafile</tag>
278 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
b0769ee3 279 Which now takes multiple entries.
7e62a74f
AJ
280
281 <tag>sslproxy_capath</tag>
282 <p>Replaced by <em>tls_outgoing_options capath=</em>.
283
284 <tag>sslproxy_cipher</tag>
285 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
286
287 <tag>sslproxy_client_certificate</tag>
288 <p>Replaced by <em>tls_outgoing_options cert=</em>.
289
290 <tag>sslproxy_client_key</tag>
291 <p>Replaced by <em>tls_outgoing_options key=</em>.
292
293 <tag>sslproxy_flags</tag>
294 <p>Replaced by <em>tls_outgoing_options flags=</em>.
295
296 <tag>sslproxy_options</tag>
297 <p>Replaced by <em>tls_outgoing_options options=</em>.
1cc44095
AJ
298 <p>All values for SSLv2 configuration or disabling have been removed.
299 <p>Manual squid.conf update may be required on upgrade.
7e62a74f
AJ
300
301 <tag>sslproxy_version</tag>
1cc44095
AJ
302 <p>Replaced by <em>tls_outgoing_options options=</em>.
303 <p>All values for SSLv2 configuration or disabling have been removed.
304 <p>Manual squid.conf update may be required on upgrade.
4d0832d7
AJ
305
306</descrip>
307
308
309<sect>Changes to ./configure options since Squid-3.5
310<p>
311There have been some changes to Squid's build configuration since Squid-3.5.
312
313This section gives an account of those changes in three categories:
314
315<itemize>
316 <item><ref id="newoptions" name="New options">
317 <item><ref id="modifiedoptions" name="Changes to existing options">
318 <item><ref id="removedoptions" name="Removed options">
319</itemize>
320
321
322<sect1>New options<label id="newoptions">
323<p>
324<descrip>
325
326</descrip>
327
328<sect1>Changes to existing options<label id="modifiedoptions">
329<p>
330<descrip>
700e2961
AJ
331 <tag>--enable-auth-basic</tag>
332 <p>The <em>MSNT-multi-domain</em> helper has been removed.
4d0832d7 333
4dd2c9d6
AJ
334 <tag>--enable-diskio</tag>
335 <p>Auto-detection of SMP related modules has been fixed to
336 actually auto-detect them without configuring the module
337 list manually.
338
4d0832d7
AJ
339</descrip>
340</p>
341
342<sect1>Removed options<label id="removedoptions">
343<p>
344<descrip>
345
346</descrip>
347
348
349<sect>Regressions since Squid-2.7
350
183b876f 351<p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
4d0832d7
AJ
352
353<p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
354
355<sect1>Missing squid.conf options available in Squid-2.7
356<p>
357<descrip>
358 <tag>broken_vary_encoding</tag>
359 <p>Not yet ported from 2.6
360
361 <tag>cache_peer</tag>
362 <p><em>monitorinterval=</em> not yet ported from 2.6
363 <p><em>monitorsize=</em> not yet ported from 2.6
364 <p><em>monitortimeout=</em> not yet ported from 2.6
365 <p><em>monitorurl=</em> not yet ported from 2.6
366
367 <tag>cache_vary</tag>
368 <p>Not yet ported from 2.6
369
370 <tag>error_map</tag>
371 <p>Not yet ported from 2.6
372
373 <tag>external_refresh_check</tag>
374 <p>Not yet ported from 2.7
375
376 <tag>location_rewrite_access</tag>
377 <p>Not yet ported from 2.6
378
379 <tag>location_rewrite_children</tag>
380 <p>Not yet ported from 2.6
381
382 <tag>location_rewrite_concurrency</tag>
383 <p>Not yet ported from 2.6
384
385 <tag>location_rewrite_program</tag>
386 <p>Not yet ported from 2.6
387
388 <tag>refresh_pattern</tag>
389 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
390 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
391 <p><em>negative-ttl=</em> not yet ported from 2.7
392
393 <tag>refresh_stale_hit</tag>
394 <p>Not yet ported from 2.7
395
396 <tag>update_headers</tag>
397 <p>Not yet ported from 2.7
398
399</descrip>
400
6a9396a7
AJ
401<sect>Copyright
402<p>
ef57eb7b 403Copyright (C) 1996-2016 The Squid Software Foundation and contributors
6a9396a7
AJ
404<p>
405Squid software is distributed under GPLv2+ license and includes
406contributions from numerous individuals and organizations.
407Please see the COPYING and CONTRIBUTORS files for details.
408
4d0832d7 409</article>