Change Log

pyOpenSSL Distribution Change Log

The change log includes a detailed description of all changes to this distribution in the recent releases.
Version: 0.13.3.1.0.1.8

Changes from 0.13.3.1.0.1.7 to 0.13.3.1.0.1.8:

  • Updated included OpenSSL libraries from OpenSSL 1.0.1g to 1.0.1h. See http://www.openssl.org/news/secadv_20140605.txt for a complete list of changes, most important:
    • 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.
    • CVE-2014-0221: 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.

Changes from 0.13.3.1.0.1.6 to 0.13.3.1.0.1.7:

Changes from 0.13.2.1.0.1.5 to 0.13.3.1.0.1.6:

  • Updated pyOpenSSL to the upstream trunk revision 171 (pyOpenSSL version 0.13.1+).
  • Added work-around for compiling pyOpenSSL trunk revision 171 on Windows with OpenSSL 1.0.0 and later.
  • Included support for TLS 1.1 and 1.2 in pyOpenSSL (rev 171). Please see the TLS support section in the documentation for details.
  • Added SSL.OP_NO_COMPRESSION and SSL.OP_SINGLE_ECDH_USE context options to be able to address the CRIME attack and allow for more secure elliptic curve Diffie-Hellman key exchange setups.
  • Added HTML Sphinx documentation from the pyOpenSSL trunk version to the package. An online version is available from our website.
  • Updated the included CA bundles to the latest Mozilla 2014-01-28 version.
  • Included ca-bundle*.crt files now have the same modification date as the Mozilla certdata.txt file from which they were generated.
  • Restored compatibility of the ca_bundle module with Python 2.4.
  • Enhanced the included https_client.py example to show case OpenSSL best practices:
    • server name parsing (RFC 2818 support will follow in one of the next releases)
    • SNI (support for TLS extension to support multiple SSL sites on a single host)
    • setup secure default SSL options
    • setup secure default SSL cipher suite
    • use TLS 1.0 - 1.2 only
    • disable SSL compression negotiation (prevent CRIME attack)

Changes from 0.13.1.1.0.1.5 to 0.13.2.1.0.1.5:

  • 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.

Changes from 0.13.0_1.0.1c_1 to 0.13.1.1.0.1.5:

Changes from 0.13.0_1.0.0j_1 to 0.13.0_1.0.1c_1:

  • Upgraded the included OpenSSL library from version 1.0.0j to version 1.0.1c. See http://www.openssl.org/news/news.html and http://www.openssl.org/news/vulnerabilities.html for a complete list of changes.
  • Added the openssl binary to the OpenSSL package directory. This can be used to access OpenSSL functionality not exposed by pyOpenSSL.
  • Changed the Windows OPENSSLDIR default to c:\openssl\ to simplify OpenSSL configuration.
  • Fixed OpenSSL assembler build issues on Windows x64 and Mac OS X PPC/x86.

Changes from 0.13.0_1.0.0g_1 to 0.13.0_1.0.0j_1:

Changes from 0.10.0_1.0.0a_1 to 0.13.0_1.0.0g_1:

  • Updated the pyOpenSSL license information from LGPL to Apache License 2.0.
  • Added support for Python 2.7 on all platforms.
  • Added documentation for automatic download of egg distributions using compatible tools such as easy_install and zc.buildout.

Changes from 0.9.0_0.9.8l_1 to 0.10.0_1.0.0a_1:

  • Upgraded the included OpenSSL library from version 0.9.8l to version 1.0.0a. See http://www.openssl.org/news/news.html for a complete list of changes.
  • 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 openssl-win64/vc9).
  • 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).

Changes from 0.9.0_0.9.8k_1 to 0.9.0_0.9.8l_1:

Changes from 0.8.1_0.9.8j_2 to 0.9.0_0.9.8k_1:

  • 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:

  • Fixed 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.
  • Added 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 connections.

Changes from 0.7.0_0.9.8i_1 to 0.8.0_0.9.8i_1:

Changes from 0.7.0_0.9.8h_1 to 0.7.0_0.9.8i_1: