https://www.openssl.org/docs/man1.0.2/crypto/X509_VERIFY_PARAM_set1_host.html

They say they NEED this because they can delete a whole load of code
that could have security bugs.

Perhaps I am wrong but upon a quick glance, doesn't this just boil
down to some simple ORing?

How does this sit with
https://www.openbsd.org/papers/eurobsdcon2014-libressl.html

The ressl API does provide one noteworthy feature. Hostname
verification. In order to make a secure TLS connection, you must do two
things. Validate the certificate and its trust chain. Then verify that
the hostname in the cert matches the hostname you've connected to. Lots
of people don't do the latter because OpenSSL doesn't do that latter.
You have to do it yourself, which requires knowing about things like
CommonNames and SubjectAltNames. The good news is that popular bindings
for languages like python and ruby include a function to verify the
hostname. The bad news is if you pick a python or ruby project at
random, they probably forget to do it. Another funny fact is that since
everybody has to write this code themselves, everybody does it a little
bit differently. Especially regarding handling of wildcard certificates
and everybody's favorite, embedded nul bytes. Hostname verification is
on by default in ressl, and the API is designed so that you always
provide a hostname; there's no way to accidentally call the function
that doesn't do verification. 

Reply via email to