New submission from Christian Heimes <li...@cheimes.de>:

Since bpo #23033, ssl.match_hostname() no longer supports partial wildcard 
matching, e.g. "www*.example.org". In case of a partial match, _dnsname_match() 
fails with a confusing/wrong error message:

>>> import ssl
>>> ssl._dnsname_match('www*.example.com', 'www1.example.com')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../cpython/Lib/ssl.py", line 198, in _dnsname_match
    "wildcard can only be present in the leftmost segment: " + repr(dn))
ssl.SSLCertVerificationError: ("wildcard can only be present in the leftmost 
segment: 'www*.example.com'",)

The wildcard *is* in the leftmost segment. But it's not a full match but a 
partial match.

The error message applies to a SAN dNSName like "*.*.example.org" or 
"www.*.example.com",  however the function does not raise an error for multiple 
or non left-most wildcards:

# multiple wildcards return None
>>> ssl._dnsname_match('*.*.example.com', 'www.sub.example.com')
# single wildcard in another label returns False
>>> ssl._dnsname_match('www.*.example.com', 'www.sub.example.com')
False

----------
assignee: christian.heimes
components: SSL
messages: 311996
nosy: christian.heimes
priority: normal
severity: normal
status: open
title: match_hostname() error reporting bug
type: behavior

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32819>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to