nginx выдает сертификат на другое доменное имя
Всем здравствуйте, у нас проблема с выдачей верного SSL-сертификата. На Windows стоит HyperV. На нем крутятся две виртуальные машины (ВМ):
- BitrixVM 7.5.0 (CentOS centos-release-7-9.2009.1.el7.centos.x86_64) - IP: x.x.x.1
- nginx/1.22.0 + Apache/2.4.54 (Ubuntu 20.04) - IP: x.x.x.2
На второй ВМ nginx используется как proxy сервер. Туда попадают все внешние запросы и передаются на ту же самую ВМ или на первую (BitrixVM).
На BitrixVM есть возможность установки сертификатов через готовые команды. И на все тамошние сайты, сделанные с помощью bitrix (bitrix1.example.com, bitrix2.example.com и т.д.), как и сам example.com, все сертификаты работают правильно.
Прилагаю конфиги nginx для проксирования запросов на BitrixVM:
server {
listen 80 default_server;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
return 301 https://$host$request_uri;
location / {
proxy_pass http://x.x.x.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
На Ubuntu крутятся сайты, которые сделаны не на битриксе :). Для них мы пока что используем только Apache2 и он прослушивает порт 8080. Вот конфиги nginx для Ubuntu:
server {
listen 80;
server_name apache_site1.example.com www.apache_site1.example.com;
access_log /var/log/nginx/apache_site1.example.com-access.log;
error_log /var/log/nginx/apache_site1.example.com-error.log;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/apache_site1.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/apache_site1.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_pass http://x.x.x.2:8080;
#proxy_ssl_server_name on;
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;
}
}
Через http сайты на Ubuntu доступны и работают. Когда пытаемся подключиться через https на сайты, что на Apache (apache_site1.example.com), отображается ошибка, что SSL-сертификат выдан другому доменному имени (example.com). Можете помочь решить проблему? В чем может быть ошибка?
Upd 1. Сертификаты для сайтов, сделанных на битриксе, настроены и установлены инструментами BitrixVM на первой ВМ.
Upd 2. Вот что написали в тех. поддержке Битрикса:
Вам нужно смотреть в сторону вашего балансировщика. На ВМ нет сайта
apache_site1.example.com, но запрос приходит на ВМ
/var/log/nginx/access.log92.50.195.50 - - [12/Aug/2022:19:10:18 +0900 - -] 200 "GET … HTTP/2.0" 28112 "https://apache_site1.example.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.134 YaBrowser/22.7.0.1925 Yowser/2.5 Safari/537.36" "-"
Так как на ВМ такого домена нет, будет открыт конфиг по умолчанию, так как он слушает любой домен
/etc/nginx/bx/site_avaliable/ssl.s1.confЭтот конфиг отдает сертификат который вы видите в браузере
ssl_certificate /home/bitrix/dehydrated/certs/example.com/fullchain.pem;
Upd 3.
SSL-конфиги example.com:
# Default SSL certificate enabled website
server {
listen 443 default_server http2 ssl;
server_name _;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
# Enable SSL connection
server_name_in_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:443;
# CERTIFICATE ANSIBLE MANAGED BLOCK
include bx/conf/ssl_options.conf;
ssl_certificate /home/bitrix/dehydrated/certs/example.com/fullchain.pem;
ssl_certificate_key /home/bitrix/dehydrated/certs/example.com/privkey.pem;
ssl_trusted_certificate /home/bitrix/dehydrated/certs/example.com/chain.pem;
# CERTIFICATE ANSIBLE MANAGED BLOCK
proxy_set_header HTTPS YES;
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
# custom options for sites; doesn't changes on update
include bx/site_settings/default/*.conf;
# Include parameters common to all websites
include bx/conf/letsencrypt-challenge-tokens.conf;
include bx/conf/bitrix.conf;
# Include server monitoring API's
include bx/server_monitor.conf;
}