1 | ** Version 0.12.0 (2021-08-14) |
---|
2 | |
---|
3 | - Three fixes that make mod_gnutls compatible with the Let's Encrypt |
---|
4 | OCSP responder for OCSP stapling: |
---|
5 | |
---|
6 | 1. Support OCSP responses that are signed directly with the private |
---|
7 | key of the CA and do not embed a signer certificate. |
---|
8 | |
---|
9 | 2. If the path part of OCSP URI provided in the certificate is |
---|
10 | empty, use "/". |
---|
11 | |
---|
12 | 3. Use SHA1 for issuer name hash and issuer key hash in OCSP |
---|
13 | requests. Support for that is required by RFC 5019 and referenced |
---|
14 | in CAB Forum Baseline Requirements, too. This particular hash |
---|
15 | doesn't need to be cryptographically secure. |
---|
16 | |
---|
17 | - Remove insecure algorithms that are still included in the GnuTLS |
---|
18 | priority set "NORMAL" from the default priorities: plain RSA key |
---|
19 | exchange, TLS 1.0, TLS 1.1 |
---|
20 | |
---|
21 | - Fix virtual host references when retrieving OCSP responses for |
---|
22 | stapling. |
---|
23 | |
---|
24 | - Share server instances for tests where reasonably possible with the |
---|
25 | same server configuration. Starting/stopping server instances is the |
---|
26 | slowest part of the tests, so this is a nice performance |
---|
27 | improvement. The Automake test harness now reports fewer tests, but |
---|
28 | some include a lot more client connections and requests to keep |
---|
29 | coverage at least as good as before. |
---|
30 | |
---|
31 | - Various improvements to tests and logging infrastructure. |
---|
32 | |
---|
33 | ** Version 0.11.0 (2020-06-27) |
---|
34 | |
---|
35 | - Change default for GnuTLSOCSPCheckNonce to "off", and send OCSP |
---|
36 | nonces only if it has been enabled. The reason for this change is |
---|
37 | that in practice most public CAs do not support OCSP nonces, which |
---|
38 | is permitted by both RFC 6960 and the CA/Browser Forum baseline |
---|
39 | requirements (as of version 1.6.9). In this situation enforcing |
---|
40 | correct nonces by default makes the automatic OCSP stapling support |
---|
41 | mostly useless. |
---|
42 | |
---|
43 | - Add a test for correct nonce handling with "GnuTLSOCSPCheckNonce |
---|
44 | on", thanks to Krista Karppinen for that and a rewrite of the OCSP |
---|
45 | responder script in Python! |
---|
46 | |
---|
47 | - Support session resumption using session tickets for proxy |
---|
48 | connections (TLS 1.3 connections only). Requires a suitable |
---|
49 | GnuTLSCache configuration. |
---|
50 | |
---|
51 | - Disable session tickets by default. The GnuTLS built-in key rotation |
---|
52 | for session tickets never actually changes the primary key, just |
---|
53 | derives keys from it, so it does not provide forward secrecy in case |
---|
54 | an attacker learns the primary key (by gaining access to server |
---|
55 | RAM). A reload of the server is enough to generate a new key, so |
---|
56 | consider enabling session tickets and reloading the server every few |
---|
57 | hours, at least until a forward-secret rotation can be implemented. |
---|
58 | |
---|
59 | - Fix a bug that mostly prevented searching ServerAliases when |
---|
60 | selecting the virtual host from SNI. |
---|
61 | |
---|
62 | - Add ./configure option to disable building PDF documentation |
---|
63 | |
---|
64 | - Deprecate SRP and disable it by default. |
---|
65 | |
---|
66 | - Add support for building coverage reports using clang's source-based |
---|
67 | code coverage. |
---|
68 | |
---|
69 | - Make ./configure check if both [::1] and 127.0.0.1 are available, |
---|
70 | disable either if not. This makes the build work out-of-the-box in |
---|
71 | Docker containers, which by default use IPv4 only. |
---|
72 | |
---|
73 | ** Version 0.10.0 (2020-02-03) |
---|
74 | |
---|
75 | - Added support for stapling multiple OCSP responses (TLS 1.3 |
---|
76 | only). mod_gnutls will staple for as many consecutive certificates |
---|
77 | in the certificate chain as possible. |
---|
78 | |
---|
79 | - Added support for TLS 1.3 post-handshake authentication, used if TLS |
---|
80 | client authentication is required only for some resources on the |
---|
81 | server. Rehandshake (for older TLS versions) is not supported, the |
---|
82 | existing but broken code has been removed. |
---|
83 | |
---|
84 | - The test infrastructure has been mostly rewritten in Python, note |
---|
85 | the new dependencies (Python 3, Pyyaml). Tests can run multiple TLS |
---|
86 | connections and HTTP(S) requests as well as custom hooks now, see |
---|
87 | test/README.md for details. |
---|
88 | |
---|
89 | - Server certificates are checked for the must-staple TLS feature |
---|
90 | extension, stapling must be enabled if it is present. |
---|
91 | |
---|
92 | - Compatibility fix for GnuTLS 3.6.11 in the test suite: Handle |
---|
93 | peer certificate type in TLS session information strings. |
---|
94 | |
---|
95 | - The test system will automatically detect if it needs to load |
---|
96 | critical modules (e.g. mod_logio) that are built-in with the Debian |
---|
97 | packages. This makes the tests work on Fedora without modifications, |
---|
98 | and likely on similar distributions too. |
---|
99 | |
---|
100 | - Tests can optionally run with Valgrind for the primary HTTPD |
---|
101 | instance by running ./configure with --enable-valgrind-test, see |
---|
102 | test/README.md for details. |
---|
103 | |
---|
104 | - Known issue: When using MSVA client certificate validation the |
---|
105 | Valgrind tests indicate memory leaks from libcurl, which is used by |
---|
106 | libmsv to send requests to the MSVA. For details see the bug report: |
---|
107 | https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=950359 |
---|
108 | |
---|
109 | ** Version 0.9.1 (2019-11-29) |
---|
110 | - Fix possible segfault (NULL pointer dereference) on failed TLS |
---|
111 | handshake. Calling ssl_var_lookup() after a failed handshake could |
---|
112 | lead to GnuTLS session information functions being called on a NULL |
---|
113 | session pointer, leading to segfault. |
---|
114 | - Remove URLs from expected error responses in the test suite. Apache |
---|
115 | HTTPD removed request URLs from canned error messages to prevent |
---|
116 | misleading text/links being displayed via crafted links |
---|
117 | (CVE-2019-10092). Adjust the expected error responses in our tests |
---|
118 | so they can pass again. |
---|
119 | - Test suite: Ignore "Content-Length" header of responses. Thanks to |
---|
120 | Krista Karppinen! |
---|
121 | - Add a section about module dependencies on socache to the handbook |
---|
122 | - Restructure the manpage build and move it to section 5 (config |
---|
123 | files) |
---|
124 | - Test suite: Restructure certificate directories |
---|
125 | |
---|
126 | ** Version 0.9.0 (2019-01-23) |
---|
127 | - Security fix: Refuse to send or receive any data over a failed TLS |
---|
128 | connection (commit 72b669eae8c45dda1850e8e5b30a97c918357b51). The |
---|
129 | previous behavior could lead to requests on reverse proxy TLS |
---|
130 | connections being sent in plain text, and might have allowed faking |
---|
131 | requests in plain text. |
---|
132 | - Security fix: Reject HTTP requests if they try to access virtual |
---|
133 | hosts that do not match their TLS connections (commit |
---|
134 | de3fad3c12f53cdbf082ad675e4b10f521a02811). Additionally check if SNI |
---|
135 | and Host header match. Thanks to Krista Karppinen for contributing |
---|
136 | tests! |
---|
137 | - OCSP stapling is now enabled by default, if possible. OCSP responses |
---|
138 | are updated regularly and stored in a cache separate from the |
---|
139 | session cache. The OCSP cache uses mod_socache_shmcb by default |
---|
140 | (if the module is loaded, no other configuration required). |
---|
141 | - Session tickets are now enabled by default if using GnuTLS 3.6.4 or |
---|
142 | newer. GnuTLS 3.6.4 introduced automatic rotation for the used key, |
---|
143 | and TLS 1.3 takes care of other reasons not to use tickets while |
---|
144 | requiring them for session resumption. Note that there is currently |
---|
145 | no mechanism to synchronize ticket keys across a cluster of servers. |
---|
146 | - The internal cache implementation has been replaced with |
---|
147 | mod_socache. Users may need to update their GnuTLSCache settings and |
---|
148 | load the appropriate socache modules. |
---|
149 | - ALPN (required for HTTP/2) now works correctly with different |
---|
150 | "Protocols" directives between virtual hosts if building with GnuTLS |
---|
151 | 3.6.3 or newer. Older versions require identical "Protocols" |
---|
152 | directives for overlapping virtual hosts. Thanks to Vincent Tamet |
---|
153 | for the bug report! |
---|
154 | - ALPN is now supported for proxy connections, making HTTP/2 proxy |
---|
155 | connections using mod_proxy_http2 possible. |
---|
156 | - GnuTLSPriorities is optional now and defaults to "NORMAL" if |
---|
157 | missing. The same applies to GnuTLSProxyPriorities (if TLS proxy is |
---|
158 | enabled). |
---|
159 | - The manual is now built as a manual page, too, if pandoc is |
---|
160 | available. |
---|
161 | - OpenPGP support has been removed. |
---|
162 | - Don't require pem2openpgp for tests when building without MSVA |
---|
163 | support. |
---|
164 | |
---|
165 | ** Version 0.8.4 (2018-04-13) |
---|
166 | - Support Apache HTTPD 2.4.33 API for proxy TLS connections |
---|
167 | - Support TLS for HTTP/2 connections with mod_http2 |
---|
168 | - Fix configuration of OCSP stapling callback |
---|
169 | |
---|
170 | ** Version 0.8.3 (2017-10-20) |
---|
171 | - Use GnuTLS' default DH parameters by default |
---|
172 | - Handle long Server Name Indication data and gracefully ignore |
---|
173 | unknown SNI types |
---|
174 | - Send SNI for proxy connections |
---|
175 | - Deprecate OpenPGP support like GnuTLS did (will be removed |
---|
176 | completely in a future release) |
---|
177 | - Do not announce session ticket support for proxy connections |
---|
178 | - Minor documentation updates (SSL_CLIENT_I_DN, reference for SNI) |
---|
179 | - Test suite: Simplify handling of proxy backend servers and OCSP |
---|
180 | responders |
---|
181 | - Test suite: stability/compatibility fixes |
---|
182 | |
---|
183 | ** Version 0.8.2 (2017-01-08) |
---|
184 | - Test suite: Ensure CRLF line ends in HTTP headers |
---|
185 | - Test suite, gen_ocsp_index.c: Handle serial as fixed order byte array |
---|
186 | |
---|
187 | ** Version 0.8.1 (2016-12-20) |
---|
188 | - Bugfix: Use APR_SIZE_T_FMT for portable apr_size_t formatting |
---|
189 | |
---|
190 | ** Version 0.8.0 (2016-12-11) |
---|
191 | - New: Support for OCSP stapling |
---|
192 | - Bugfix: Access to DBM cache is locked using global mutex |
---|
193 | "gnutls-cache" |
---|
194 | - Bugfix: GnuTLSSessionTickets is now disabled by default as described |
---|
195 | in the handbook |
---|
196 | - Fixed memory leak while checking proxy backend certificate |
---|
197 | - Fixed memory leaks in post_config |
---|
198 | - Safely delete session ticket key (requires GnuTLS >= 3.4) |
---|
199 | - Improved error handling in post_config hook |
---|
200 | - Various handbook updates |
---|
201 | - Internal API documentation can be generated using Doxygen |
---|
202 | - Unused code has been removed (conditionals for GnuTLS 2.x and Apache |
---|
203 | versions before 2.2, internal Lua bytecode structure last used in |
---|
204 | 2011). |
---|
205 | - Test suite: Fixed locking for access to the PGP keyring of the test |
---|
206 | certificate authority |
---|
207 | - mod_gnutls can be built using Clang (unsupported) |
---|
208 | |
---|
209 | ** Version 0.7.5 (2016-05-28) |
---|
210 | - Sunil Mohan Adapa reported retry loops during session shutdown in |
---|
211 | cleanup_gnutls_session() due to gnutls_bye() incorrectly returning |
---|
212 | GNUTLS_E_INTERRUPTED or GNUTLS_E_AGAIN. Setting the GnuTLS session |
---|
213 | errno in mgs_transport_write() fixes the problem. |
---|
214 | - Import Daniel Kahn Gillmor's patches for GnuPG v2 support from the |
---|
215 | Debian package. |
---|
216 | - Build system improvements that allow VPATH builds and get "make |
---|
217 | distcheck" to work |
---|
218 | |
---|
219 | ** Version 0.7.4 (2016-04-13) |
---|
220 | - Support SoftHSM 2 for PKCS #11 testing |
---|
221 | - Increase verbosity of test logs |
---|
222 | |
---|
223 | ** Version 0.7.3 (2016-01-12) |
---|
224 | - Update test suite for compatibility with GnuTLS 3.4, which has |
---|
225 | stricter key usage checks and priorities than 3.3. |
---|
226 | - Write non-HTML output to mod_status reports if AP_STATUS_SHORT is |
---|
227 | set (mod_status sets it for requests with the "auto" parameter, e.g. |
---|
228 | https://localhost/server-status?auto). |
---|
229 | - Register "ssl_is_https" function so the special mod_rewrite variable |
---|
230 | %{HTTPS} works correctly with mod_gnutls. The new test case for this |
---|
231 | requires Wget or curl. Fixes Debian bug #514005. |
---|
232 | - Test suite servers listen on IPv4 *and* IPv6 loopback addresses by |
---|
233 | default (other addresses configurable), which should fix failures |
---|
234 | due to localhost randomly resolving to either on some distributions. |
---|
235 | - Isolate tests using network namespaces, if possible. This avoids |
---|
236 | port conflicts with other test cases (so they can run in parallel) |
---|
237 | and host services. |
---|
238 | - Support for local Apache drop-in config files in the test suite |
---|
239 | (e.g. to load additional modules needed on Fedora). |
---|
240 | - Try to use markdown to build HTML documentation if pandoc is not |
---|
241 | available. |
---|
242 | - Disable use of flock if it is unavailable or does not support |
---|
243 | timeouts (the latter caused the build to fail on Debian Hurd). |
---|
244 | - New test: Disable TLS 1.0 (regression test for Debian bug #754960). |
---|
245 | |
---|
246 | ** Version 0.7.2 (2015-11-21) |
---|
247 | - Bugfix: Non-blocking reads in the input filter could lead to a busy |
---|
248 | wait in the gnutls_io_input_read function, causing high load on |
---|
249 | Keep-Alive connections waiting for data, until either more data |
---|
250 | could be received or the connection was closed. The fix is to pass |
---|
251 | EAGAIN/EINTR results up to the input filter so they can be handled |
---|
252 | properly. |
---|
253 | - Close TLS session if the input filter receives EOF (mostly relevant |
---|
254 | for proper termination of proxy connections). |
---|
255 | - Remove dependency on APR Memcache, which is replaced by the newer |
---|
256 | version included in the APR Utility Library (libaprutil). |
---|
257 | - Remove dependency on bc. It was used for floating point arithmetic |
---|
258 | in the test suite, the calculations have been changed to use |
---|
259 | integers and pure bash code. |
---|
260 | |
---|
261 | ** Version 0.7.1 (2015-10-18) |
---|
262 | - Improved handling of PKCS #11 modules: mod_gnutls now loads either |
---|
263 | modules specified using GnuTLSP11Module, or the system defaults, but |
---|
264 | not both. Thanks to Nikos Mavrogiannopoulos for the report and |
---|
265 | initial patch! |
---|
266 | - Initialize variables to safe defaults during client certificate |
---|
267 | verification. Certain error code paths did not set them, but they |
---|
268 | should never be hit due to config validation. This adds another line |
---|
269 | of defense. |
---|
270 | - Enable C99 support via autoconf |
---|
271 | - Test suite improvements. Most importantly, automake now handles |
---|
272 | environment setup without any external make calls. Rules to build |
---|
273 | the certificates are included from the old test makefile. Note that |
---|
274 | the dependency on GNU make is not new (the test makefile always used |
---|
275 | GNU make syntax), it just wasn't listed explicitly. |
---|
276 | |
---|
277 | ** Version 0.7 (2015-07-12) |
---|
278 | - Security fix for TLS client authentication (CVE-2015-2091) |
---|
279 | - Bug fixes that enable support for reverse proxy operation |
---|
280 | - Various test suite improvements. Tests are configured through autoconf, |
---|
281 | so the test suite now works for builds without Monkeysphere support. |
---|
282 | - Add support for TLS connections to back end servers when operating as a |
---|
283 | reverse proxy (X.509 authentication only at the moment). |
---|
284 | - PKCS #11 support for server keys and certificates |
---|
285 | - Use strict compiler arguments by default (-Wall -Werror -Wextra) |
---|
286 | - Allow limiting the size of certificates exported as SSL_SERVER_CERT |
---|
287 | and SSL_CLIENT_CERT through the GnuTLSExportCertificates directive |
---|
288 | |
---|
289 | ** Version 0.6 (2014-02-17) |
---|
290 | - Generating DH Params instead of using static ones. |
---|
291 | - Now considering ServerAlias Directives. |
---|
292 | - Major Legacy Code Cleanup. |
---|
293 | - html and pdf and manual documentation generated from markdown sources |
---|
294 | - support monkeysphere validation agent (MSVA) client-certificate verification |
---|
295 | - wider test suite |
---|
296 | - GnuTLSExportCertificates off by default |
---|
297 | |
---|
298 | ** Version 0.5.10 (2011-07-12) |
---|
299 | - Patched a bug responsible for excessive memory consumption by mod_gnutls. |
---|
300 | - Support for proxying from SSL to plain HTTP was added (ie. proxy termination). |
---|
301 | |
---|
302 | ** Version 0.5.9 (2010-09-24) |
---|
303 | - GnuTLSCache none is now an allowed option. |
---|
304 | - Corrected behavior in Keep-Alive connections (do not |
---|
305 | terminate the connection prematurely) |
---|
306 | - The GnuTLSCache variable now can be given the specific |
---|
307 | option "gdbm" instead of "dbm". "dbm" will use the berkeley |
---|
308 | db type of libapr while gdbm will force gdbm to be used. |
---|
309 | sdbm is no longer being used due to serious limitations. |
---|
310 | |
---|
311 | ** Version 0.5.8 (2010-08-18) |
---|
312 | - Session tickets are enabled by default. |
---|
313 | - Fixes some segmentation faults noticed in some |
---|
314 | configurations. |
---|
315 | |
---|
316 | ** Version 0.5.7 (2010-07-01) |
---|
317 | - Force usage of SDBM. For some reason the default in |
---|
318 | my system had issues after reaching a limit of entries. |
---|
319 | SDBM seems stable so force it. |
---|
320 | - Optimizations in session caching. |
---|
321 | - Added support for session tickets. This allows a |
---|
322 | server to avoid using a session cache and still support |
---|
323 | session resumption. This is at the cost of transporting |
---|
324 | session data during handshake. New option |
---|
325 | GnuTLSSessionTickets [on|off] |
---|
326 | - Depend on gnutls 2.10.0 to force support for safe |
---|
327 | renegotiation. |
---|
328 | |
---|
329 | ** Version 0.5.6 (2010-03-24) |
---|
330 | - Corrected issue with firefox and long POST data (by |
---|
331 | handling EINTR and EAGAIN errors in read). |
---|
332 | - Added support for chained client certificates |
---|
333 | - Corrected more issues related to double frees |
---|
334 | http://issues.outoforder.cc/view.php?id=102 |
---|
335 | |
---|
336 | ** Version 0.5.5 (2009-06-13) |
---|
337 | - Removed limits on CA certificate loading. Reported by |
---|
338 | Sander Marechal and Jack Bates. |
---|
339 | - Do not allow sending empty TLS packets even when instructed to. |
---|
340 | This had the side effect of clients closing connection. |
---|
341 | |
---|
342 | ** Version 0.5.4 (2009-01-04) |
---|
343 | - mod_gnutls.h: modified definition to extern to avoid compilation |
---|
344 | errors in darwin. |
---|
345 | - Added patch to fix issue with mod_proxy. Investigation and patch by Alain |
---|
346 | Knaff. |
---|
347 | - libgnutls detection uses pkg-config. |
---|
348 | |
---|
349 | ** Version 0.5.3 (2008-10-16) |
---|
350 | - Corrected bug to allow having an OpenPGP-only web site. |
---|
351 | - Increased Max handshake tries due to interrupted system calls. |
---|
352 | |
---|
353 | ** Version 0.5.2 (2008-06-29) |
---|
354 | - Depend on gnutls 2.4 which has openpgp support in main library. |
---|
355 | |
---|
356 | ** Version 0.5.1 (2008-03-05) |
---|
357 | - Added --disable-srp configure option |
---|
358 | - Better check for memcache (patch by Guillaume Rousse) |
---|
359 | - Corrected possible memory leak in DBM support for resuming sessions. |
---|
360 | |
---|
361 | ** Version 0.5.0-alpha (2008-01-24) |
---|
362 | - Added support for OpenPGP keys. The new directives are: |
---|
363 | GnuTLSPGPKeyringFile, GnuTLSPGPCertificateFile, GnuTLSPGPKeyFile |
---|
364 | |
---|
365 | ** Version 0.4.2 (2007-12-10) |
---|
366 | - Added support for sending a certificate chain. |
---|
367 | - Corrected bug which did not allow the TLS session cache to be used. |
---|
368 | - Do not allow resuming sessions on different servers. |
---|
369 | |
---|
370 | ** Version 0.4.1 (2007-12-03) |
---|
371 | - Added support for subject alternative names in certificates. |
---|
372 | Only one per certificate is supported. |
---|
373 | - New enviroment variables: SSL_CLIENT_M_VERSION, SSL_CLIENT_S_SAN%, |
---|
374 | SSL_CLIENT_S_TYPE, SSL_SERVER_M_VERSION, SSL_SERVER_S_SAN%, SSL_SERVER_S_TYPE |
---|
375 | - The compatibility mode can now be enabled explicitely with the |
---|
376 | %COMPAT keyword at the GnuTLSPriorities string. It is no longer the default. |
---|
377 | - Check for GnuTLSPriorities directive. This corrects a segfault. Thanks |
---|
378 | to David Hrbáč. |
---|
379 | - Better handling of GnuTLSDHFile and GnuTLSRSAFile. |
---|
380 | - No longer default paths for RSA and DH parameter files. |
---|