skillfed

idna_ssl

Patch ssl.match_hostname for Unicode(idna) domains support

idna-ssl v1.1.0 697.0K downloads/30d#5,301 on PyPI9
Permissive license Abandoned released

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-ssl

uv

uv add idna-ssl

poetry

poetry add idna-ssl

Installing 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

Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.3Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7

Tags

unicode domain ssl certificate validationidna ssl hostname matchinginternationalized domain names httpsssl match_hostname unicode patchcyrillic domain ssl support
internationalized-domainsssl-patchinglegacy-support

More Cryptography packages