Skip to content

Normalize TLS server hostnames#1086

Open
bubaizhanshen wants to merge 2 commits into
encode:masterfrom
bubaizhanshen:normalize-server-hostname
Open

Normalize TLS server hostnames#1086
bubaizhanshen wants to merge 2 commits into
encode:masterfrom
bubaizhanshen:normalize-server-hostname

Conversation

@bubaizhanshen
Copy link
Copy Markdown

Fixes #1063.

Hostnames may include a trailing dot to mark a fully qualified domain name. Passing that dotted hostname through to TLS hostname verification can cause certificate hostname mismatches even when the certificate is valid for the same hostname without the final dot.

This normalizes the server_hostname used by the sync, anyio, and trio TLS backends by stripping trailing dots before passing it to the TLS layer.

Tests:

  • PYTHONPATH=/tmp/stubreadline /tmp/httpcore-venv/bin/python -m pytest tests/test_ssl.py
  • PYTHONPATH=/tmp/stubreadline /tmp/httpcore-venv/bin/python -m pytest tests/_sync/test_connection.py tests/_async/test_connection.py
  • /tmp/httpcore-venv/bin/python -m ruff check httpcore/_ssl.py httpcore/_backends/sync.py httpcore/_backends/anyio.py httpcore/_backends/trio.py tests/test_ssl.py
  • /tmp/httpcore-venv/bin/python -m ruff format --check --diff httpcore/_ssl.py httpcore/_backends/sync.py httpcore/_backends/anyio.py httpcore/_backends/trio.py tests/test_ssl.py
  • /tmp/httpcore-venv/bin/python -m mypy httpcore/_ssl.py tests/test_ssl.py
  • /tmp/httpcore-venv/bin/python -m py_compile httpcore/_ssl.py httpcore/_backends/sync.py httpcore/_backends/anyio.py httpcore/_backends/trio.py tests/test_ssl.py
  • git diff --check

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant