31
31
<p>This document describes the changes made to the SSL application.
34
<section><title>SSL 4.1.4</title>
36
<section><title>Improvements and New Features</title>
40
Reduced memory footprint of an ssl connection.</p>
42
Handshake hashes, premaster secret and "public_key_info"
43
does not need to be saved when the connection has been
44
established. The own certificate is no longer duplicated
51
Add the option {hibernate_after, int()} to ssl:connect
61
<section><title>SSL 4.1.3</title>
63
<section><title>Fixed Bugs and Malfunctions</title>
67
Fixed error in cache-handling fix from ssl-4.1.2</p>
69
Own Id: OTP-9018 Aux Id: seq11739 </p>
73
Verification of a critical extended_key_usage-extension
76
Own Id: OTP-9029 Aux Id: seq11541 </p>
83
<section><title>SSL 4.1.2</title>
85
<section><title>Fixed Bugs and Malfunctions</title>
89
The ssl application caches certificate files, it will now
90
invalidate cache entries if the diskfile is changed.</p>
92
Own Id: OTP-8965 Aux Id: seq11739 </p>
96
Now runs the terminate function before returning from the
97
call made by ssl:close/1, as before the caller of
98
ssl:close/1 could get problems with the reuseaddr option.</p>
107
<section><title>SSL 4.1.1</title>
109
<section><title>Fixed Bugs and Malfunctions</title>
113
Correct handling of client certificate verify message
114
When checking the client certificate verify message the
115
server used the wrong algorithm identifier to determine
116
the signing algorithm, causing a function clause error in
117
the public_key application when the key-exchange
118
algorithm and the public key algorithm of the client
119
certificate happen to differ.</p>
127
<section><title>Improvements and New Features</title>
131
For testing purposes ssl now also support some anonymous
132
cipher suites when explicitly configured to do so.</p>
138
Sends an error alert instead of crashing if a crypto
139
function for the selected cipher suite fails.</p>
141
Own Id: OTP-8930 Aux Id: seq11720 </p>
148
<section><title>SSL 4.1</title>
150
<section><title>Improvements and New Features</title>
154
Updated ssl to ignore CA certs that violate the asn1-spec
155
for a certificate, and updated public key asn1 spec to
156
handle inherited DSS-params.</p>
162
Changed ssl implementation to retain backwards
163
compatibility for old option {verify, 0} that shall be
164
equivalent to {verify, verify_none}, also separate the
165
cases unknown ca and selfsigned peer cert, and restored
166
return value of deprecated function
167
public_key:pem_to_der/1.</p>
173
Changed the verify fun so that it differentiate between
174
the peer certificate and CA certificates by using
175
valid_peer or valid as the second argument to the verify
176
fun. It may not always be trivial or even possible to
177
know when the peer certificate is reached otherwise.</p>
179
*** POTENTIAL INCOMPATIBILITY ***</p>
188
<section><title>SSL 4.0.1</title>
190
<section><title>Fixed Bugs and Malfunctions</title>
194
The server now verifies the client certificate verify
195
message correctly, instead of causing a case-clause.</p>
201
The client hello message now always include ALL available
202
cipher suites (or those specified by the ciphers option).
203
Previous implementation would filter them based on the
204
client certificate key usage extension (such filtering
205
only makes sense for the server certificate).</p>
211
Fixed handling of the option {mode, list} that was broken
212
for some packet types for instance line.</p>
218
Empty packets were not delivered to the client.</p>
223
<p> Building in a source tree without prebuilt platform
224
independent build results failed on the SSL examples
225
when: </p> <list><item> cross building. This has been
226
solved by not building the SSL examples during a cross
227
build. </item><item> building on Windows. </item></list>
233
Fixed a handshake error which occurred on some ssl
242
<section><title>Improvements and New Features</title>
246
Revise the public_key API - Cleaned up and documented the
247
public_key API to make it useful for general use, also
248
changed ssl to use the new API.</p>
254
Added support for inputing certificates and keys directly
255
in DER format these options will override the pem-file
256
options if specified.</p>
262
To gain interoperability ssl will not check for padding
263
errors when using TLS 1.0. It is first in TLS 1.1 that
264
checking the padding is an requirement.</p>
270
Changed the semantics of the verify_fun option in the
271
ssl-application so that it takes care of both application
272
handling of path validation errors and verification of
273
application specific extensions. This means that it is
274
now possible for the server application in verify_peer
275
mode to handle path validation errors. This change moved
276
some functionality earlier in ssl to the public_key
283
Added the functionality so that the verification fun will
284
be called when a certificate is considered valid by the
285
path validation to allow access to each certificate in
286
the path to the user application. Also try to verify
287
subject-AltName, if unable to verify it let the
288
application verify it.</p>
297
<section><title>SSL 4.0</title>
299
<section><title>Improvements and New Features</title>
303
New ssl now support client/server-certificates signed by
310
Ssl has now switched default implementation and removed
311
deprecated certificate handling. All certificate handling
312
is done by the public_key application.</p>
322
<section><title>SSL 3.11.1</title>
324
<section><title>Fixed Bugs and Malfunctions</title>
328
Fixed handling of several ssl/tls packets arriving at the
329
same time. This was broken during a refactoring of the
338
<section><title>Improvements and New Features</title>
342
Added missing checks for padding and Mac value. Removed
343
code for export ciphers and DH certificates as we decided
344
not to support them.</p>
350
New ssl will no longer return esslerrssl to be backwards
351
compatible with old ssl as this hids infomation from the
352
user. format_error/1 has been updated to support new ssl.</p>
354
*** POTENTIAL INCOMPATIBILITY ***</p>
360
New ssl now supports secure renegotiation as described by
367
Alert handling has been improved to better handle
368
unexpected but valid messages and the implementation is
369
also changed to avoid timing related issues that could
370
cause different error messages depending on network
371
latency. Packet handling was sort of broken but would
372
mostly work as expected when socket was in binary mode.
373
This has now been fixed.</p>
382
<section><title>SSL 3.11</title>
384
<section><title>Fixed Bugs and Malfunctions</title>
388
Fixes handling of the option fail_if_no_peer_cert and
389
some undocumented options. Thanks to Rory Byrne.</p>
396
<section><title>Improvements and New Features</title>
400
Support for Diffie-Hellman. ssl-3.11 requires
407
New ssl now properly handles ssl renegotiation, and
408
initiates a renegotiation if ssl/ltls-sequence numbers
409
comes close to the max value. However RFC-5746 is not yet
410
supported, but will be in an upcoming release.</p>
416
When gen_tcp is configured with the {packet,http} option,
417
it automatically switches to expect HTTP Headers after a
418
HTTP Request/Response line has been received. This update
419
fixes ssl to behave in the same way. Thanks to Rory
426
Ssl now correctly verifies the extended_key_usage
427
extension and also allows the user to verify application
428
specific extensions by supplying an appropriate fun.</p>
430
Own Id: OTP-8554 Aux Id: OTP-8553 </p>
434
Fixed ssl:transport_accept/2 to return properly when
435
socket is closed. Thanks to Rory Byrne.</p>
444
<section><title>SSL 3.10.9</title>
446
<section><title>Fixed Bugs and Malfunctions</title>
450
Fixed a crash in the certificate certification part.</p>
452
Own Id: OTP-8510 Aux Id: seq11525 </p>
459
<section><title>SSL 3.10.8</title>
461
<section><title>Fixed Bugs and Malfunctions</title>
464
<p><c>ssl:send/2</c> ignored packet option, fix provided
465
by YAMASHINA Hio.</p>
466
<p>Fixed a file cache bug which caused problems when the
467
same file was used for both cert and cacert.</p>
468
<p>Allow <c>ssl:listen/2</c> to be called with option
470
<p> Fixed ssl:setopts(Socket, binary) which didn't work
477
Do a controlled shutdown if a non ssl packet arrives as
478
the first packet.</p>
480
Own Id: OTP-8459 Aux Id: seq11505 </p>
486
<section><title>Improvements and New Features</title>
489
<p>Fixed session reuse (in new_ssl), thanks Wil Tan.</p>
490
<p>Send CA list during Certificate Request (in new_ssl) ,
491
thanks Wil Tan.</p> <p><c>NOTE</c>: SSL (new_ssl)
492
requires public_key-0.5.</p>
34
501
<section><title>SSL 3.10.7</title>
36
503
<section><title>Fixed Bugs and Malfunctions</title>