Рейтинг:0

SSL-сертификат недействителен, когда сервер подключается сам

флаг in

У меня есть локальная сеть, в которой IP-адрес сервера [сервера]: 192.168.88.201, хост: local.mydomain.com. Этот сервер — Ubuntu 18.04.6 LTS, работающий под управлением Apache+PHP. Также на этом сервере установлен Let's encrypt SSL с помощью certbot.

При использовании другого компьютера в локальной сети SSL работает нормально https://local.mydomain.com -> Chrome показывает, что сертификация действительна.

Проблема возникает, когда сервер подключается сам и считает, что сертификация недействительна.

Я застрял здесь, так как я не уверен, где может быть проблема. Есть ли у вас предложения?

Например: В терминале [SERVER], когда:

root@server:/tmp# wget https://local.mydomain.com
--2022-01-07 07:47:18-- https://local.mydomain.com/
Разрешение local.mydomain.com (local.mydomain.com)... 192.168.88.201
Подключение к local.mydomain.com (local.mydomain.com)|192.168.88.201|:443... подключено.
ОШИБКА: не удается проверить сертификат local.mydomain.com, выданный «CN=R3,O=Let's Encrypt,C=US»:
  Не удалось локально проверить полномочия эмитента.
Для небезопасного подключения к local.mydomain.com используйте --no-check-certificate.
root@server:/tmp# openssl s_client -connect local.mydomain.com:443 -prexit > a.txt
ПОДКЛЮЧЕН(00000005)
---
Цепочка сертификатов
 0 s:CN = local.mydomain.com
   i:C = US, O = Let’s Encrypt, CN = R3
---
Сертификат сервера
-----НАЧАТЬ СЕРТИФИКАТ-----
***
-----КОНЕЦ СЕРТИФИКАТА-----
тема = CN = local.mydomain.com

эмитент = C = США, O = Let's Encrypt, CN = R3

---
Имена ЦС сертификата клиента не отправлены
Дайджест одноранговой подписи: SHA256
Тип одноранговой подписи: RSA-PSS
Временный ключ сервера: X25519, 253 бита
---
Рукопожатие SSL прочитало 2005 байт и записало 402 байта
Ошибка проверки: не удалось проверить первый сертификат
---
Новый, TLSv1.3, шифр TLS_AES_256_GCM_SHA384.
Открытый ключ сервера 2048 бит.
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
Предварительные данные не были отправлены
Код возврата проверки: 21 (невозможно проверить первый сертификат)
---
HTTP/1.1 400 Неверный запрос
Дата: пятница, 07 января 2022 г., 06:53:07 по Гринвичу
Сервер: Apache/2.4.29 (Ubuntu)
Длина содержимого: 313
Подключение: близко
Тип содержимого: текст/html; кодировка = iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><заголовок>
<title>400 Неверный запрос</title>
</голова><тело>
<h1>Неверный запрос</h1>
<p>Ваш браузер отправил запрос, который этот сервер не смог понять.<br />
</p>
<час>
<address>Сервер Apache/2.4.29 (Ubuntu) на local.mydomain.com, порт 443</address>
</тело></html>
---
Билет на новую сессию после рукопожатия прибыл:
SSL-сессия:
    Протокол: TLSv1.3
    Шифр: TLS_AES_256_GCM_SHA384.
    Идентификатор сеанса: E5F662F909BA717C5FA0D6DBBDA777CA284E164FACC4784915D7E08DF39B63DB
    Идентификатор сеанса-ctx:
    Возобновление PSK: FFA7F4A4502316545E4147887CE4A7D552DDF54A92A8C2B5D87601BEA01B8DDEC2292004635AC152E71188CEDEF099CE
    Идентификация PSK: нет
    Подсказка идентификации PSK: нет
    Имя пользователя SRP: нет
    Подсказка срока действия билета сеанса TLS: 300 (секунд)
    Билет сеанса TLS:
    0000 ****

    Время начала: 1641538382
    Время ожидания: 7200 (сек)
    Код возврата проверки: 21 (невозможно проверить первый сертификат)
    Расширенный главный секрет: нет
    Макс. ранние данные: 0
---
читать Р БЛОК
---
Билет на новую сессию после рукопожатия прибыл:
SSL-сессия:
    Протокол: TLSv1.3
    Шифр: TLS_AES_256_GCM_SHA384.
    Идентификатор сеанса: BABB13C496B291A43F4FDDCD20FE5568574F79ACA2D06203A53D9072FBE3A2C8.
    Идентификатор сеанса-ctx:
    Возобновление PSK: 90F330C4D3B9BA54DB4CA687400E692CC7AF250F7E6A58493D579A9DD6C3DBA3E5B1F2BA94DA7AEA8CF483C2FB19211B
    Идентификация PSK: нет
    Подсказка идентификации PSK: нет
    Имя пользователя SRP: нет
    Подсказка срока действия билета сеанса TLS: 300 (секунд)
    Билет сеанса TLS:
    0000 - ***

    Время начала: 1641538382
    Время ожидания: 7200 (сек)
    Код возврата проверки: 21 (невозможно проверить первый сертификат)
    Расширенный главный секрет: нет
    Макс. ранние данные: 0
---
читать Р БЛОК
---
Цепочка сертификатов
 0 s:CN = local.mydomain.com
   i:C = US, O = Let’s Encrypt, CN = R3
---
Сертификат сервера
-----НАЧАТЬ СЕРТИФИКАТ-----
***
-----КОНЕЦ СЕРТИФИКАТА-----
тема = CN = local.mydomain.com

эмитент = C = США, O = Let's Encrypt, CN = R3

---
Имена ЦС сертификата клиента не отправлены
Дайджест одноранговой подписи: SHA256
Тип одноранговой подписи: RSA-PSS
Временный ключ сервера: X25519, 253 бита
---
SSL-рукопожатие прочитало 3152 байта и записало 450 байт.
Ошибка проверки: не удалось проверить первый сертификат
---
Новый, TLSv1.3, шифр TLS_AES_256_GCM_SHA384.
Открытый ключ сервера 2048 бит.
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
Предварительные данные не были отправлены
Код возврата проверки: 21 (невозможно проверить первый сертификат)
---
Рейтинг:2
флаг se
Цепочка сертификатов
 0 s:CN = local.mydomain.com
   i:C = US, O = Let’s Encrypt, CN = R3

Сервер неправильно настроен и отправляет только неполную цепочку без промежуточных сертификатов. Вместо этого правильно настроенный сайт должен возвращать дополнительный промежуточный сертификат, ведущий к ISRG Root X1. У Let's Encrypt есть пример сервера для этого:

$ openssl s_client -connect valid-isrgrootx1.letsencrypt.org:443
...
Цепочка сертификатов
 0 s:CN = действительный-isrgrootx1.letsencrypt.org
   i:C = US, O = Let’s Encrypt, CN = R3
 1 s:C = US, O = Let’s Encrypt, CN = R3
   i:C = США, O = Исследовательская группа по безопасности в Интернете, CN = ISRG Root X1

При использовании другого компьютера... Chrome показывает, что сертификация действительна.

Браузер обычно успешно обходит такую ​​неправильную конфигурацию, загружая отсутствующие промежуточные сертификаты или используя кэшированные копии. Другие клиенты не будут. Поэтому не рекомендуется проверять только то, работает ли он с браузером. Используйте вместо этого такие сайты, как Лаборатории SSL который будет сообщать о «проблемах с цепочкой» как о проблеме в вашем случае.

флаг in
Спасибо, вы были правы! Оказалось в конфиге апача надо использовать fullchain.pem вместо cert.pem. SSLCertificateFile /etc/letsencrypt/live/local.mydomain.com/cert.pem -> SSLCertificateFile /etc/letsencrypt/live/local.mydomain.com/fullchain.pem

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.