Nginx с SSL на порте 8443: ошибка "Requested host does not match any Subject Alternative Names (SANs)" с указанием на CDN Fastly

Описание проблемы:

Пытаюсь настроить SSL-соединение для домена myproject.example с использованием Nginx, где SSL-сертификат привязан к порту 8443, а HTTP перенаправляется на HTTPS. SSL-сертификат для домена имеет корректно указанные альтернативные имена (SAN): myproject.example и www.myproject.example. При локальных проверках соединение успешно, но при доступе извне получаю ошибку:

Requested host does not match any Subject Alternative Names (SANs) on TLS certificate.

Сообщение также указывает на CDN Fastly, несмотря на то, что он не подключен к моему домену.

Шаги по устранению проблемы

  1. Проверка SSL-сертификата: Использовал openssl для проверки сертификата:

    openssl x509 -in /etc/ssl/private/myproject.example.crt -text -noout | grep -E 'Subject:|DNS:'
    

    Результаты показывают корректные SAN:

    Subject: CN = www.myproject.example
            DNS:www.myproject.example, DNS:myproject.example
    
  2. Тестирование подключения на сервере: При выполнении команды с сервера:

    curl -v https://myproject.example:8443 --resolve myproject.example:8443:127.0.0.1
    

    возвращается содержимое веб-страницы, что подтверждает корректность сертификата и конфигурации Nginx.

  3. Проверка соединения с внешних устройств: При обращении к https://myproject.example с устройств за пределами сервера получаю ошибку "Requested host does not match any SANs". Похоже, запрос перенаправляется через Fastly, хотя я не указывал CDN в настройках.

Конфигурация Nginx:

# HTTP редирект на HTTPS
server {
    listen 80;
    server_name myproject.example www.myproject.example;
    return 301 https://$host$request_uri;
}

# Основной сервер для HTTPS
server {
    listen 8443 ssl; # Порт для HTTPS
    server_name myproject.example www.myproject.example;

    # Пути к сертификатам и ключу
    ssl_certificate /etc/ssl/private/myproject.example.crt;
    ssl_certificate_key /etc/ssl/private/myproject.example.key;

    # Настройки SSL
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    keepalive_timeout 70;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    # OCSP Stapling
    ssl_stapling on;
    ssl_trusted_certificate /etc/ssl/ca.crt; # Корневой сертификат
    resolver 8.8.8.8;

    # Настройки проксирования
    location / {
        proxy_pass http://127.0.0.1:5000/admin/login;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_ssl_server_name on;
    }
}

Вопрос:

Почему возникает ошибка "SAN mismatch", и почему появляется указание на Fastly? Как я могу заставить домен корректно отвечать на внешние HTTPS-запросы?


Ответы (0 шт):