Как диагностировать TLS-проблему: refused, SSL handshake и сертификаты?

Для отладки TLS-проблем между Nginx и upstream-сервисом можно использовать tcpdump и curl следующим образом:

Короткий ответ

Что ответить на собеседовании

Для отладки TLS-проблем между Nginx и upstream-сервисом можно использовать tcpdump и curl следующим образом:

Подробный разбор

Ответ с пояснениями

Для отладки TLS-проблем между Nginx и upstream-сервисом можно использовать tcpdump и curl следующим образом:

  1. tcpdump
  • Запустите tcpdump на сервере, где работает Nginx, чтобы захватить трафик между Nginx и upstream-сервисом по нужному порту (обычно 443 или другой, если TLS):
tcpdump -i eth0 host <upstream_ip> and port <upstream_port> -w capture.pcap
  • Анализируйте capture.pcap в Wireshark, фильтруя по TLS (например, tls.handshake.type == 1 для ClientHello) чтобы увидеть, проходит ли TLS handshake, какие версии и шифры используются, есть ли ошибки.
  1. curl
  • Используйте curl с опцией --verbose или -v для подключения к upstream-сервису напрямую с сервера Nginx:
curl -v https://<upstream_host>:<port>/path
  • Обратите внимание на сообщения об ошибках TLS, например, несовпадение сертификатов, проблемы с SNI, неподдерживаемые версии TLS.
  • Можно указать конкретную версию TLS или набор шифров для теста:
curl --tlsv1.2 -v https://<upstream_host>:<port>/path
  1. Дополнительно
  • Проверьте конфигурацию Nginx: параметры proxy_ssl_protocols, proxy_ssl_ciphers, proxy_ssl_verify.
  • Убедитесь, что сертификаты и цепочки доверия корректны.

Таким образом, tcpdump помогает увидеть низкоуровневый трафик и handshake, curl — проверить соединение и получить диагностические сообщения TLS.

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

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку