ssl-cert-check не получает правильные даты истечения срока действия сертификатов Lets Encrypt

Я использую ssl-cert-check для отслеживания списка сертификатов моих доменов.

В моем crontab я настроил его на тихую работу и отправляю по электронной почте мне устаревшие домены, но команда, которую я использую для отладки:

ssl-cert-check -f ssldomains.txt -x 21 -i

Он правильно читает файл и получает сертификаты для всего списка, но, похоже, не получает правильную дату истечения срока действия для сертификатов, выпущенных LetsEncrypt.org

Другие поставщики сертификатов, похоже, не подвержены этой проблеме.

Например, срок действия сертификата, срок действия которого истекает 24 марта 2017 года, когда я проверяю его в своем браузере, истекает 15 января 2017 года.

Я работаю с nginx.

Почему инструмент CLI получает неверную дату истечения срока действия и как я могу это исправить?

1 ответ

Решение

Это кажется проблемой SNI. Если вы предоставляете несколько SSL-сертификатов на один и тот же IP-адрес, клиент отправляет имя хоста вместе с первоначальным запросом, чтобы сервер мог предоставить правильный сертификат. Более старые версии ssl-cert-check этого не делают, эта функция была представлена ​​в версии 3.27.

Обе версии Ubuntu 14.04 и 16.04 поставляются с версией 3.27, но, похоже, в этой версии функция исправлена. Есть в основном две строки кода, которые имеют отношение:

TLSSERVERNAME="FALSE"

а также:

if [ "${TLSSERVERNAME}" = "TRUE" ]
then
     TLSFLAG="${TLSFLAG} -servername $1"
fi

Как видите, переменная установлена ​​в FALSE, а затем проверяется на TRUE, но никогда не изменяется.

Текущая версия на GitHub (3.30) имеет дополнительный блок кода:

if ${OPENSSL} s_client -h 2>&1 | grep '-servername' > /dev/null
then
    TLSSERVERNAME="TRUE"
else
    TLSSERVERNAME="FALSE"
fi

Это проверяет установленную версию openssl на поддержку имени сервера. Когда я добавляю этот блок в сценарий на моей локальной установке Ubuntu, результат в порядке, без блока я получаю неправильный сертификат, как и вы.

Итак, это ошибка, которая была исправлена ​​автором, но еще не нашла своего пути в репозиторий Ubuntu. Вы можете исправить это самостоятельно и надеяться, что после следующего обновления репозиторий будет содержать фиксированную версию, или вместо этого вы используете скрипт из github.

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