Skip to main content

The ssl.match_hostname() function from Python 3.2

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 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.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.2a3.tar.gz (2.4 kB view details)

Uploaded Source

File details

Details for the file backports.ssl_match_hostname-3.2a3.tar.gz.

File metadata

File hashes

Hashes for backports.ssl_match_hostname-3.2a3.tar.gz
Algorithm Hash digest
SHA256 ef78d0532f11c4403288a6a4a7e80da2f8924e6b0d662349bb86c09c6fea8b31
MD5 42adbd3c15d78eb6b7b7c654ec5c717c
BLAKE2b-256 f3d877d5967f6648ef4d75acc8be8aa73020c0a5272d28eec1183607df4efcc2

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