Description
Флаг X509_V_FLAG_X509_STRICT включает дополнительные проверки безопасности сертификатов, присутствующих в цепочке сертификатов. По умолчанию он не установлен. Начиная с OpenSSL версии 1.1.1h, в качестве дополнительной строгой проверки была добавлена проверка на запрет сертификатов в цепочке, которые имеют явно закодированные параметры эллиптической кривой. Ошибка в реализации этой проверки означала, что результат предыдущей проверки, подтверждающей, что сертификаты в цепочке являются действительными сертификатами CA, был перезаписан. Это эффективно обходит проверку того, что сертификаты, не относящиеся к ЦС, не должны иметь возможности выдавать другие сертификаты. Если "цель" была настроена, то существует последующая возможность проверки того, что сертификат является действительным ЦС. Все названные "целевые" значения, реализованные в libcryp, выполняют эту проверку. Следовательно, там, где установлена цель, цепочка сертификатов все равно будет отклонена, даже если использовался строгий флаг. Назначение устанавливается по умолчанию в процедурах проверки сертификатов клиента и сервера libssl, но оно может быть отменено или удалено приложением. Чтобы быть затронутым, приложение должно явно установить флаг проверки X509_V_FLAG_X509_STRICT и либо не устанавливать цель для проверки сертификата, либо, в случае клиентских или серверных приложений TLS, переопределить цель по умолчанию. OpenSSL версии 1.1.1h и новее подвержены этой проблеме. Пользователи этих версий должны перейти на OpenSSL 1.1.1k. OpenSSL 1.0.2 не подвержен этой проблеме. Исправлено в OpenSSL 1.1.1k (затронуто 1.1.1h-1.1.1j).