idna_ssl
Patch ssl.match_hostname for Unicode(idna) domains support
What it is and what it does
idna-ssl is a monkey-patch for Python's ssl.match_hostname function to handle Unicode (internationalized) domain names in HTTPS certificate validation. When applied, it allows SSL certificate matching to work correctly with domains containing non-ASCII characters, which would otherwise fail during hostname verification in HTTPS connections.
The package was created to work around a Python bug where Unicode domains could not be validated. It patches the ssl module globally before any HTTP client imports. However, the package is no longer maintained; the last release was 2018-07-05 and the repository is archived. The description notes that the core issue was fixed in Python 3.7, though IDNA2008 standard compliance remained incomplete at that time.
Use it for:
- Making HTTPS requests to internationalized domain names with HTTP clients on Python 3.3–3.6.
- Patching legacy Python environments that lack native Unicode domain support in ssl.match_hostname.
- Testing applications that connect to non-ASCII domain names on older Python versions.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Patches Python's ssl.match_hostname to support Unicode (IDNA) domain names, enabling SSL certificate validation for internationalized domain names in HTTPS connections.
No. The package is abandoned (last release 2018-07-05, repository archived) with high install friction. Modern Python versions have addressed the underlying issue. On older Python versions, the lack of maintenance makes this a poor choice; upgrading Python is the better path.
Install
idna-ssl on PyPI
pip
pip install idna-ssluv
uv add idna-sslpoetry
poetry add idna-sslInstalling idna_ssl
Before you install
High install friction due to source distribution; package is abandoned (last release 2018-07-05, repository archived), with no maintenance for nearly 6 years.
License in practice
Licensed under MIT (permissive), imposing no restrictions on use or redistribution.
Quickstart
pip install idna-ssl
from idna_ssl import patch_match_hostname
patch_match_hostname()
import ssl
# ssl.match_hostname now supports Unicode domains
Requires patching before importing HTTP client libraries; the patch modifies global ssl.match_hostname behavior.
Verify before relying
- Whether the underlying ssl.match_hostname issue has been resolved in Python 3.7+, making this patch unnecessary.
- Current compatibility with Python versions beyond 3.7 (classifiers only list up to 3.7).
- Whether IDNA2008 standard issues mentioned in the description have been addressed in Python's standard library.
Package facts
| License | not declared (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | abandoned — 2,962 days since the last release |
| Last repo commit | (repository archived) |
| First released | |
| Downloads | 696,973/month — #5,301 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: idna-ssl-1.1.0.tar.gz
Keywords: ssl, Unicode, idna, match_hostname
Tags
More Cryptography packages
Certifi provides Mozilla's curated collection…
copyleft · top 100 on PyPI
cryptographycryptography provides cryptographic recipes and…
permissive · top 100 on PyPI
rsaPure-Python RSA encryption, decryption,…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
azure-identityProvides Microsoft Entra ID token-based…
unclear · top 1,000 on PyPI
PyNaClPyNaCl provides Python bindings to libsodium…
permissive · top 1,000 on PyPI
backports.ssl_match_hostnameProvides the ssl.match_hostname() function for…
permissive · top 15,000 on PyPI
idnaConverts domain names between Unicode and…
permissive · top 100 on PyPI
domain2idnaConverts domain names and URLs to Punycode/IDNA…
permissive · top 15,000 on PyPI
apeye-coreProvides core offline URL and domain handling…
permissive · top 5,000 on PyPI
publicsuffix2Extracts the public suffix and registrable…
copyleft · top 5,000 on PyPI
linkify-it-pyDetects and extracts URLs, email addresses, and…
permissive · top 1,000 on PyPI
dnspythondnspython is a DNS toolkit that handles…
permissive · top 1,000 on PyPI
python-certifi-win32Patches certifi at runtime to include…
permissive · top 15,000 on PyPI
ada-urlParse, validate, and manipulate URLs according…
permissive · top 15,000 on PyPI
tldsProvides a set of valid top-level domains…
permissive · top 15,000 on PyPI