Skip to main content

The ssl.match_hostname() function from Python 3.4

Project description

The Secure Sockets layer is only actually secure if you check the hostname in the certificate returned by the server to which you are connecting, and verify that it matches to hostname that you are trying to reach.

But the matching logic, defined in RFC2818, can be a bit tricky to implement on your own. So the ssl package in the Standard Library of Python 3.2 and greater now includes a match_hostname() function for performing this check instead of requiring every application to implement the check separately.

This backport brings match_hostname() to users of earlier versions of Python. Simply make this distribution a dependency of your package, and then use it like this:

from backports.ssl_match_hostname import match_hostname, CertificateError
...
sslsock = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv3,
                          cert_reqs=ssl.CERT_REQUIRED, ca_certs=...)
try:
    match_hostname(sslsock.getpeercert(), hostname)
except CertificateError, ce:
    ...

Note that the ssl module is only included in the Standard Library for Python 2.6 and later; users of Python 2.5 or earlier versions will also need to install the ssl distribution from the Python Package Index to use code like that shown above.

Brandon Craig Rhodes is merely the packager of this distribution; the actual code inside comes verbatim from Python 3.4.

History

  • This function was introduced in python-3.2

  • It was updated for python-3.4a1 for a CVE (backports-ssl_match_hostname-3.4.0.1)

  • It was updated from RFC2818 to RFC 6125 compliance in order to fix another security flaw for python-3.3.3 and python-3.4a5 (backports-ssl_match_hostname-3.4.0.2)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

backports.ssl_match_hostname-3.4.0.2.tar.gz (5.2 kB view details)

Uploaded Source

File details

Details for the file backports.ssl_match_hostname-3.4.0.2.tar.gz.

File metadata

File hashes

Hashes for backports.ssl_match_hostname-3.4.0.2.tar.gz
Algorithm Hash digest
SHA256 07410e7fb09aab7bdaf5e618de66c3dac84e2e3d628352814dc4c37de321d6ae
MD5 788214f20214c64631f0859dc79f23c6
BLAKE2b-256 3a15f9e48bfd2b971ade10ad0c03babab057791c260b05322cbd3f47e27be108

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page