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, несмотря на то, что он не подключен к моему домену.
Шаги по устранению проблемы
Проверка 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
Тестирование подключения на сервере: При выполнении команды с сервера:
curl -v https://myproject.example:8443 --resolve myproject.example:8443:127.0.0.1
возвращается содержимое веб-страницы, что подтверждает корректность сертификата и конфигурации Nginx.
Проверка соединения с внешних устройств: При обращении к
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-запросы?