Updated included OpenSSL libraries from OpenSSL 1.0.1h to 1.0.1i. See https://www.openssl.org/news/secadv_20140806.txt for a complete list of changes. Most fixes apply to the OpenSSL DTLS implementation, which pyOpenSSL currently does not support. The following fix is relevant for pyOpenSSL applications:
CVE-2014-3511:A flaw in the OpenSSL TLS server code allows a man-in-the-middle attacker to force a
downgrade to TLS 1.0.
Compiled pyOpenSSL with OPENSSL_LOAD_CONF to have the OpenSSL libs automatically load the openssl.cnf configuration file.
This allows easy configuration of additional OpenSSL parameters and
defaults, locations of certificate files, hardware engines, etc. without
having to change the application code. Please see the documentation for details.
Updated the included CA root certificate bundles to Mozilla's 2014-07-15 update.
CVE-2014-0224: An attacker can force the use of weak keying material in OpenSSL
SSL/TLS clients and servers. This can be exploited by a
Man-in-the-middle (MITM) attack where the attacker can decrypt and
modify traffic from the attacked client and server.
By sending an invalid DTLS handshake to an OpenSSL DTLS client the code
can be made to recurse eventually crashing in a DoS attack. Only
applications using OpenSSL as a DTLS client are affected.
CVE-2014-3470: OpenSSL TLS clients enabling anonymous ECDH ciphersuites are subject to a DoS attack.
Added the following new options for context.set_options(): OP_TLSEXT_PADDING, OP_SAFARI_ECDHE_ECDSA_BUG, OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION, OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION.
Documented all supported context.set_options() options (to the extent possible using the OpenSSL documentation itself).
Updated the included CA root certificate bundles to Mozilla's 2014-04-22 update.
CVE-2014-0160 ("Heartbleed Bug"): A missing bounds check in the handling of the TLS heartbeat extension can be
used to reveal up to 64kB of memory to a connected client or server. This
issue did not affect versions of OpenSSL prior to 1.0.1. For information, also have a look at the Heartbeet Bug website.
Added a patch by Christian Heimes to pyOpenSSL: This addresses the CVE-2013-4238 related problem with embedded NUL bytes in subjectAltNames and also fixes a memory leak in the X509 .get_extension() method.
Christian Heimes also pointed us to a problem with the included CA root bundle,
which turns out to be rather wide-spread. Mozilla's certificate bundle
includes more than just the trusted CA root certificates. It also
includes several explicitly untrusted root certificates and even single
untrusted server certificates.
Our investigation showed that while OpenSSL does handle trust parameters
in the certificates, it doesn't use this information during certificate
verification, if the certificate is passed in together with other
trusted certificates. Future OpenSSL versions may add this support, but
at least versions up to and including 1.0.1e don't have it.
To work around this problem, we have split the bundle file into separate bundles, each with different trust settings included. The explicitly untrusted certificates are no longer included in the lists to avoid potentially trusting these untrusted (root) certificates.
Many thanks to Christian Heimes for these reports.
Added new TRUST_* constants to the OpenSSL.ca_bundle module and new purpose parameters to various bundle query functions.
Updated the documentation to reflect the changes and document the new set of CRT certificate files and trust settings.
Fixed a missing import in the https_client.py example.
Changed the package version scheme to be PEP 386 compatible. The new scheme no longer contains underscores or patch level letters.
Added a CA root certificate bundle file ca-bundle.crt, which is created from the current Mozilla root CA certificate list. This allows verifying server certificates without having to rely on the system root CA certificate list.
The bundle file will be updated with each new release of eGenix
pyOpenSSL. We also make the file available as separate download. Please
see the product page for details.
Added pyOpenSSL examples/ directory to the source distribution.
Added a new OpenSSL.ca_bundle module which provides easy to use access to the embedded ca-bundle.crt file.
Added new example https_client.py to the examples/ directory, which demonstrates setting up an SSL connection and using the new OpenSSL.ca_bundle module.
Windows x64 builds now have assembler code turned back on again, after a problem with OpenSSL 1.0.1c.
Upgraded the included pyOpenSSL library from version 0.9 to version 0.10. See the announcement for a summary of changes.
Added a new default certificate search path. The embedded OpenSSL libs will now look for certificates in /etc/ssl on Unix platforms and /System/Library/OpenSSL on Mac OS X
Note that it's still better to explicitly tell OpenSSL where to look for
trusted certificates via .load_verify_locations(None, certs_dir) than
to rely on the above defaults using context.set_default_verify_paths()
Added support for Win64 and precompiled Python 2.6 compatible
binaries for that platform (you can find the OpenSSL libs in
Added support for Mac OS X 10.6 on Intel x64.
Added .egg Distributions for Python 2.4 as well (in order to support Plone 3).
work-around chosen by the OpenSSL team is to disable SSL session
renegotiations altogether. This can cause applications relying on this
feature on the client or server side to fail. You can still download
the previous version of our pyOpenSSL distribution if you run into such problems.
Upgraded the included pyOpenSSL library to version 0.9, which includes a new fix for the threading problems of version 0.8 and several new features.
Upgraded the included OpenSSL libraries to version 0.9.8k, which includes a number of important bug fixes related to SSL.
Changes from 0.8.1_0.9.8j_1 to 0.8.1_0.9.8j_2:
Added support for Mac OS X and pre-built archives for this platform.
Changes from 0.8.0_0.9.8j_1 to 0.8.1_0.9.8j_1:
a serious problem with pyOpenSSL 0.8.0 and multi-threaded applications:
the new threading fixes cause invalid thread states in the Python
interpreter which resulted in random core dumps and seg faults. The patch was provided by Maxim Sobolev on SourceForge. Note that this patch has not yet been integrated into upstream pyOpenSSL.
pre-built archives for Windows upon request from the Plone people: this
makes it easier to integrate the archives into buildout scripts.
Changes from 0.8.0_0.9.8i_1 to 0.8.0_0.9.8j_1:
Upgraded the included OpenSSL libs to version 0.9.8j, which fixes a vulnerability found in earlier OpenSSL releases of the 0.9.8 branch: CVE-2008-5077.
Enabled zlib compression support
in OpenSSL for both the Linux and Windows builds, so OpenSSL
client/servers can now negotiate on-the-fly zlib compression for SSL