Почему опция openssl -trusted_first ведет себя не так, как переменная среды X509_V_FLAG_TRUSTED_FIRST?

У меня есть perl-скрипт, который запускает openssl для локальной проверки действительности сертификатов. Я не хочу просто установить env var и уйти. Это больше похоже на что-то забавное с моей установкой или конфигурацией openssl

Что за система, версии…

Я локально проверяю сертификаты от Letsencrypt. Это система 20.04/Focal. Openssl — это OpenSSL 1.1.1f 31 марта 2020 года , поэтому я ожидаю, что он будет успешно проверять сертификаты, даже если LE «перекрестно подписывает» их с использованием нового корневого сертификата ISRG.

Однако после истечения срока действия старого сертификата X3 начались эти ошибки…

openssl verify -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
C = US, O = Internet Security Research Group, CN = ISRG Root X1. 
error 2 at 2 depth lookup: unable to get issuer certificate. 
error /path/redacted/cert.pem: verification failed

Это было странно. Немного покопавшись, я задумался об опции -trusted_first для проверки openssl. Это именно то, на что openssl будет жаловаться, если параметр «доверенный-первый» не включен. Однако попытка явного включения этой опции ничего не дает:

openssl verify -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error /path/redacted/cert.pem: verification failed

Хорошо, хорошо. Эта опция должна быть включена по умолчанию, начиная с openssl 1.1.1 (это система, см. выше). Так что мое явное включение не должно иметь значения.

Но в конце концов я попытался указать его как env var.Подожди, что? Почему указание этой переменной среды исправляет поведение openssl, чтобы доверять первому корневому сертификату, который он находит в цепочке:

set X509_V_FLAG_TRUSTED_FIRST openssl verify -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem

… работает с выходным значением, равным нулю.

уменьшение масштаба

Я не понимаю, почему openssl просто не работает(tm). Это полностью обновленная версия 20.04. Новый корневой сертификат ISRG установлен в /etc/ssl/certs/ISRG_Root_X1.pem и update-ca-certificates доволен:

Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
0
задан 7 October 2021 в 19:21

0 ответов

Другие вопросы по тегам:

Похожие вопросы: