]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
add option to get a certificate or CRL from a URL
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
b9115239
DSH
5 Changes between 1.0.1 and 1.0.2 [xx XXX xxxx]
6
2aa3ef78
DSH
7 *) Print out deprecated issuer and subject unique ID fields in
8 certificates.
9 [Steve Henson]
10
5c8d41be
DSH
11 *) Extend OCSP I/O functions so they can be used for simple general purpose
12 HTTP as well as OCSP. New wrapper function which can be used to download
13 CRLs using the OCSP API.
14 [Steve Henson]
15
15387e4c
DSH
16 *) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
17 [Steve Henson]
18
49ef33fa
DSH
19 *) SSL_CONF* functions. These provide a common framework for application
20 configuration using configuration files or command lines.
21 [Steve Henson]
22
bc200e69
DSH
23 *) SSL/TLS tracing code. This parses out SSL/TLS records using the
24 message callback and prints the results. Needs compile time option
25 "enable-ssl-trace". New options to s_client and s_server to enable
26 tracing.
27 [Steve Henson]
28
78b5d89d
DSH
29 *) New ctrl and macro to retrieve supported points extensions.
30 Print out extension in s_server.
31 [Steve Henson]
32
bd9fc1d6
DSH
33 *) New functions to retrieve certificate signature and signature
34 OID NID.
35 [Steve Henson]
36
1520e6c0
DSH
37 *) Add functions to retrieve and manipulate the raw cipherlist sent by a
38 client to OpenSSL.
39 [Steve Henson]
40
ccf6a19e
DSH
41 *) New Suite B modes for TLS code. These use and enforce the requirements
42 of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
43 only use Suite B curves. The Suite B modes can be set by using the
44 strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
45 [Steve Henson]
46
ba8bdea7
DSH
47 *) New chain verification flags for Suite B levels of security. Check
48 algorithms are acceptable when flags are set in X509_verify_cert.
49 [Steve Henson]
50
6660baee
DSH
51 *) Make tls1_check_chain return a set of flags indicating checks passed
52 by a certificate chain. Add additional tests to handle client
53 certificates: checks for matching certificate type and issuer name
54 comparison.
55 [Steve Henson]
56
25d4c925
DSH
57 *) If an attempt is made to use a signature algorithm not in the peer
58 preference list abort the handshake. If client has no suitable
59 signature algorithms in response to a certificate request do not
60 use the certificate.
61 [Steve Henson]
62
44adfeb6
DSH
63 *) If server EC tmp key is not in client preference list abort handshake.
64 [Steve Henson]
65
b762acad
DSH
66 *) Add support for certificate stores in CERT structure. This makes it
67 possible to have different stores per SSL structure or one store in
68 the parent SSL_CTX. Include distint stores for certificate chain
69 verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
70 to build and store a certificate chain in CERT structure: returing
71 an error if the chain cannot be built: this will allow applications
72 to test if a chain is correctly configured.
73
74 Note: if the CERT based stores are not set then the parent SSL_CTX
75 store is used to retain compatibility with existing behaviour.
76
77 [Steve Henson]
78
b28fbdfa
DSH
79 *) New function ssl_set_client_disabled to set a ciphersuite disabled
80 mask based on the current session, check mask when sending client
81 hello and checking the requested ciphersuite.
82 [Steve Henson]
83
a897502c
DSH
84 *) New ctrls to retrieve and set certificate types in a certificate
85 request message. Print out received values in s_client. If certificate
86 types is not set with custom values set sensible values based on
87 supported signature algorithms.
88 [Steve Henson]
89
04c32cdd
DSH
90 *) Support for distinct client and server supported signature algorithms.
91 [Steve Henson]
92
623a5e24
DSH
93 *) Add certificate callback. If set this is called whenever a certificate
94 is required by client or server. An application can decide which
95 certificate chain to present based on arbitrary criteria: for example
96 supported signature algorithms. Add very simple example to s_server.
97 This fixes many of the problems and restrictions of the existing client
98 certificate callback: for example you can now clear an existing
99 certificate and specify the whole chain.
100 [Steve Henson]
101
484f8762
DSH
102 *) Add new "valid_flags" field to CERT_PKEY structure which determines what
103 the certificate can be used for (if anything). Set valid_flags field
104 in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
105 to have similar checks in it.
106
107 Add new "cert_flags" field to CERT structure and include a "strict mode".
108 This enforces some TLS certificate requirements (such as only permitting
109 certificate signature algorithms contained in the supported algorithms
110 extension) which some implementations ignore: this option should be used
111 with caution as it could cause interoperability issues.
112 [Steve Henson]
113
c70a1fee
DSH
114 *) Update and tidy signature algorithm extension processing. Work out
115 shared signature algorithms based on preferences and peer algorithms
116 and print them out in s_client and s_server. Abort handshake if no
117 shared signature algorithms.
118 [Steve Henson]
119
0b362de5
DSH
120 *) Add new functions to allow customised supported signature algorithms
121 for SSL and SSL_CTX structures. Add options to s_client and s_server
122 to support them.
123 [Steve Henson]
124
d312f7be
DSH
125 *) New function SSL_certs_clear() to delete all references to certificates
126 from an SSL structure. Before this once a certificate had been added
127 it couldn't be removed.
128 [Steve Henson]
129
70cd3c6b
DSH
130 *) Integrate hostname, email address and IP address checking with certificate
131 verification. New verify options supporting checking in opensl utility.
132 [Steve Henson]
133
45da1efc
DSH
134 *) Fixes and wildcard matching support to hostname and email checking
135 functions. Add manual page.
136 [Florian Weimer (Red Hat Product Security Team)]
137
138 *) New functions to check a hostname email or IP address against a
139 certificate. Add options x509 utility to print results of checks against
140 a certificate.
141 [Steve Henson]
142
d65b8b21
BL
143 *) Fix OCSP checking.
144 [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
145
146 *) Backport support for partial chain verification: if an intermediate
147 certificate is explicitly trusted (using -addtrust option to x509
148 utility for example) the verification is sucessful even if the chain
149 is not complete.
150 The OCSP checking fix depends on this backport.
151 [Steve Henson and Rob Stradling <rob.stradling@comodo.com>]
152
9d2006d8
DSH
153 *) Add -trusted_first option which attempts to find certificates in the
154 trusted store even if an untrusted chain is also supplied.
155 [Steve Henson]
156
988037fe
AP
157 *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
158 platform support for Linux and Android.
159 [Andy Polyakov]
160
da8512aa 161 *) Call OCSP Stapling callback after ciphersuite has been chosen, so
dc144417
DSH
162 the right response is stapled. Also change current certificate to
163 the certificate actually sent.
da8512aa
BL
164 See http://rt.openssl.org/Ticket/Display.html?id=2836.
165 [Rob Stradling <rob.stradling@comodo.com>]
166
0e05b51f
AP
167 *) Support for linux-x32, ILP32 environment in x86_64 framework.
168 [Andy Polyakov]
169
4e14996e
BL
170 *) RFC 5878 support.
171 [Emilia Kasper, Adam Langley, Ben Laurie (Google)]
172
1dded7f7
DSH
173 *) Experimental multi-implementation support for FIPS capable OpenSSL.
174 When in FIPS mode the approved implementations are used as normal,
175 when not in FIPS mode the internal unapproved versions are used instead.
176 This means that the FIPS capable OpenSSL isn't forced to use the
177 (often lower perfomance) FIPS implementations outside FIPS mode.
178 [Steve Henson]
179
c3cb0691
DSH
180 *) Transparently support X9.42 DH parameters when calling
181 PEM_read_bio_DHparameters. This means existing applications can handle
182 the new parameter format automatically.
183 [Steve Henson]
184
491734eb
DSH
185 *) Initial experimental support for X9.42 DH parameter format: mainly
186 to support use of 'q' parameter for RFC5114 parameters.
187 [Steve Henson]
188
e811eff5
DSH
189 *) Add DH parameters from RFC5114 including test data to dhtest.
190 [Steve Henson]
191
e46c807e
DSH
192 *) Support for automatic EC temporary key parameter selection. If enabled
193 the most preferred EC parameters are automatically used instead of
194 hardcoded fixed parameters. Now a server just has to call:
195 SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
196 support ECDH and use the most appropriate parameters.
197 [Steve Henson]
198
6b870763
DSH
199 *) Enhance and tidy EC curve and point format TLS extension code. Use
200 static structures instead of allocation if default values are used.
201 New ctrls to set curves we wish to support and to retrieve shared curves.
202 Print out shared curves in s_server. New options to s_server and s_client
203 to set list of supported curves.
204 [Steve Henson]
205
55058181
DSH
206 *) New ctrls to retrieve supported signature algorithms and
207 supported curve values as an array of NIDs. Extend openssl utility
208 to print out received values.
209 [Steve Henson]
210
a068a1d0
DSH
211 *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
212 between NIDs and the more common NIST names such as "P-256". Enhance
213 ecparam utility and ECC method to recognise the NIST names for curves.
214 [Steve Henson]
215
37b16c84
DSH
216 *) Enhance SSL/TLS certificate chain handling to support different
217 chains for each certificate instead of one chain in the parent SSL_CTX.
218 [Steve Henson]
219
c523eb98
DSH
220 *) Support for fixed DH ciphersuite client authentication: where both
221 server and client use DH certificates with common parameters.
222 [Steve Henson]
223
0ffa4997
DSH
224 *) Support for fixed DH ciphersuites: those requiring DH server
225 certificates.
226 [Steve Henson]
b9115239 227
5e145e54
DSH
228 Changes between 1.0.1c and 1.0.1d [xx XXX xxxx]
229
5f4cf088
BL
230 *) Make openssl verify return errors.
231 [Chris Palmer <palmer@google.com> and Ben Laurie]
232
482f2380
DSH
233 *) Fix possible deadlock when decoding public keys.
234 [Steve Henson]
235
5e145e54
DSH
236 *) Don't use TLS 1.0 record version number in initial client hello
237 if renegotiating.
238 [Steve Henson]
239
240 Changes between 1.0.1b and 1.0.1c [10 May 2012]
a56f9a61 241
e7c84838
DSH
242 *) Sanity check record length before skipping explicit IV in TLS
243 1.2, 1.1 and DTLS to avoid DoS attack.
244
245 Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
246 fuzzing as a service testing platform.
247 (CVE-2012-2333)
248 [Steve Henson]
249
24547c23
DSH
250 *) Initialise tkeylen properly when encrypting CMS messages.
251 Thanks to Solar Designer of Openwall for reporting this issue.
252 [Steve Henson]
253
a56f9a61
DSH
254 *) In FIPS mode don't try to use composite ciphers as they are not
255 approved.
256 [Steve Henson]
257
258 Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
f69abd53 259
7e0c9630 260 *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
a6df6702
DSH
261 1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
262 mean any application compiled against OpenSSL 1.0.0 headers setting
263 SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng
7e0c9630 264 TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
a6df6702
DSH
265 0x10000000L Any application which was previously compiled against
266 OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
7e0c9630
AP
267 will need to be recompiled as a result. Letting be results in
268 inability to disable specifically TLS 1.1 and in client context,
269 in unlike event, limit maximum offered version to TLS 1.0 [see below].
a6df6702
DSH
270 [Steve Henson]
271
f69abd53
AP
272 *) In order to ensure interoperabilty SSL_OP_NO_protocolX does not
273 disable just protocol X, but all protocols above X *if* there are
274 protocols *below* X still enabled. In more practical terms it means
275 that if application wants to disable TLS1.0 in favor of TLS1.1 and
276 above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass
0ae89cf3
AP
277 SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to
278 client side.
f69abd53
AP
279 [Andy Polyakov]
280
d6ef8165 281 Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
54543b95 282
564a503b
DSH
283 *) Check for potentially exploitable overflows in asn1_d2i_read_bio
284 BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
285 in CRYPTO_realloc_clean.
286
287 Thanks to Tavis Ormandy, Google Security Team, for discovering this
288 issue and to Adam Langley <agl@chromium.org> for fixing it.
289 (CVE-2012-2110)
290 [Adam Langley (Google), Tavis Ormandy, Google Security Team]
291
bb3add20
BM
292 *) Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
293 [Adam Langley]
294
48e0f666
DSH
295 *) Workarounds for some broken servers that "hang" if a client hello
296 record length exceeds 255 bytes:
297
298 1. Do not use record version number > TLS 1.0 in initial client
299 hello: some (but not all) hanging servers will now work.
300 2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
301 the number of ciphers sent in the client hello. This should be
302 set to an even number, such as 50, for example by passing:
303 -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
304 Most broken servers should now work.
305 3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
306 TLS 1.2 client support entirely.
a6df6702 307 [Steve Henson]
48e0f666 308
54543b95
AP
309 *) Fix SEGV in Vector Permutation AES module observed in OpenSSH.
310 [Andy Polyakov]
311
f3dcae15 312 Changes between 1.0.0h and 1.0.1 [14 Mar 2012]
9472baae 313
0cd7a032
DSH
314 *) Add compatibility with old MDC2 signatures which use an ASN1 OCTET
315 STRING form instead of a DigestInfo.
316 [Steve Henson]
317
16b7c81d
DSH
318 *) The format used for MDC2 RSA signatures is inconsistent between EVP
319 and the RSA_sign/RSA_verify functions. This was made more apparent when
320 OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
321 those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect
322 the correct format in RSA_verify so both forms transparently work.
323 [Steve Henson]
324
fc6800d1
DSH
325 *) Some servers which support TLS 1.0 can choke if we initially indicate
326 support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
327 encrypted premaster secret. As a workaround use the maximum pemitted
328 client version in client hello, this should keep such servers happy
329 and still work with previous versions of OpenSSL.
330 [Steve Henson]
331
bd6941cf
DSH
332 *) Add support for TLS/DTLS heartbeats.
333 [Robin Seggelmann <seggelmann@fh-muenster.de>]
334
6e750fcb
DSH
335 *) Add support for SCTP.
336 [Robin Seggelmann <seggelmann@fh-muenster.de>]
337
62308f3f
DSH
338 *) Improved PRNG seeding for VOS.
339 [Paul Green <Paul.Green@stratus.com>]
340
cecafcce
AP
341 *) Extensive assembler packs updates, most notably:
342
343 - x86[_64]: AES-NI, PCLMULQDQ, RDRAND support;
344 - x86[_64]: SSSE3 support (SHA1, vector-permutation AES);
345 - x86_64: bit-sliced AES implementation;
346 - ARM: NEON support, contemporary platforms optimizations;
347 - s390x: z196 support;
348 - *: GHASH and GF(2^m) multiplication implementations;
349
350 [Andy Polyakov]
351
ca0efb75
DSH
352 *) Make TLS-SRP code conformant with RFC 5054 API cleanup
353 (removal of unnecessary code)
354 [Peter Sylvester <peter.sylvester@edelweb.fr>]
355
b1d74291
BL
356 *) Add TLS key material exporter from RFC 5705.
357 [Eric Rescorla]
358
060a38a2
BL
359 *) Add DTLS-SRTP negotiation from RFC 5764.
360 [Eric Rescorla]
361
e2809bfb
BL
362 *) Add Next Protocol Negotiation,
363 http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00. Can be
364 disabled with a no-npn flag to config or Configure. Code donated
365 by Google.
366 [Adam Langley <agl@google.com> and Ben Laurie]
367
9c37519b
BM
368 *) Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
369 NIST-P256, NIST-P521, with constant-time single point multiplication on
370 typical inputs. Compiler support for the nonstandard type __uint128_t is
3d520f7c
BM
371 required to use this (present in gcc 4.4 and later, for 64-bit builds).
372 Code made available under Apache License version 2.0.
9c37519b 373
3d520f7c
BM
374 Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
375 line to include this in your build of OpenSSL, and run "make depend" (or
376 "make update"). This enables the following EC_METHODs:
9c37519b
BM
377
378 EC_GFp_nistp224_method()
379 EC_GFp_nistp256_method()
380 EC_GFp_nistp521_method()
381
382 EC_GROUP_new_by_curve_name() will automatically use these (while
383 EC_GROUP_new_curve_GFp() currently prefers the more flexible
384 implementations).
385