Требуется ли проверка CN/Hostname по SSL-сертификату в openssl и почему?

Требуется ли проверка CN/Hostname по SSL-сертификату в openssl и почему?

При наличии «сертификатов доверия» и других атрибутов… насколько это важно?

Реализует ли OpenSSL это сейчас? Если нет, то почему OpenSSL этого не делает?

решение1

В большинстве протоколов/приложений, использующих SSL, клиент должен проверить ОБА (1) что сервер представляет действительный сертификат, то есть тот, который выдан доверенным центром сертификации и не просрочен, не отозван или не подделан, И (2) что этот сертификат принадлежит нужному вам серверу, а не кому-то другому, к кому ваше соединение было перенаправлено по ошибке или в результате преднамеренной атаки. (В редких случаях вам нужна не аутентификация сервера, а только конфиденциальность, но тогда вам, вероятно, лучше использовать наборы шифров «anon» или «aNULL», которые явно не выполняют аутентификацию.)

OpenSSL на сегодняшний день поддерживает (1), но не (2), и обычно поддерживает только корневые сертификаты CA в своем хранилище доверенных сертификатов; один корневой CA может быть «ответственным» за тысячи или миллионы сертификатов сервера, и если, например, Verisign выдал сертификаты обоим, bigbank.comэто localdiner.comне значит, что я хочу предоставить свои счета bigbank localdiner. Поэтому приложению необходимо выполнить (2), либо в verify_callback, либо после завершения рукопожатия, но до отправки (конфиденциальных) данных. Планируется, что следующий основной релиз 1.0.2 будет содержать улучшения проверки цепочки сертификатов, и я полагаю, что также проверку имени, по крайней мере, в некоторых случаях. Примечание для HTTPS, использующего RFC 2818 или других протоколов на основе TLS, использующих RFC 6125, вам необходимо проверить как CommonName в Subject, так и расширение SubjectAlternativeNames, если оно присутствует.

Я не знаюпочему OpenSSL(а до этого SSLeay)не делает этогоуже. Можно сказать, что некоторые необычные приложения SSL/TLS хотят чего-то иного, чем стандартный CN/SAN, но есть и другие области, где OpenSSL обрабатывает общие случаи и предоставляет обратные вызовы или опции для редких случаев. Я думаю, что, вероятно, это было просто слишком много работы и недостаточно людей (до недавнего времени).

Связанный контент