Назад | Перейти на главную страницу

Невозможно заставить подстановочный сертификат Certbot работать с сервером Nginx

У меня есть веб-приложение, которое поддерживает несколько поддоменов, но я не могу найти правильную настройку nginx, чтобы сертификаты работали.

Я уже создал сертификаты certbot с этой командой

sudo certbot --server https://acme-v02.api.letsencrypt.org/directory -d * .example.com --manual --preferred-issues dns-01 certonly

Затем я скопировал файлы fullchain.pem и privkey.pem в каталог / etc / nginx / ssl / namesite-wildcard.

Это мой файл конфигурации nginx, который находится в каталоге сайтов:

server {    
    server_name nameSite.com www.nameSite.com;  //Main domain settings, not related to my problem
    
    location / {
            proxy_pass http://localhost:42069;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
     }

        location /api {
                proxy_pass http://localhost:5000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
     }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/nameSite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nameSite.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
}

server{ 
    listen 443 ssl;  //THIS is the tricky section
    

    server_name *.nameSite.com;

        location / {
                proxy_pass http://localhost:42069;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
     }
    ssl_certificate /etc/nginx/ssl/nameSite-wildcard/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/nameSite-wildcard/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

}

server {
    if ($host ~ ^[^.]+\.nameSite\.com$) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = www.nameSite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = nameSite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;    server_name nameSite.com www.nameSite.com;
    return 404; # managed by Certbot
}

Я должен отметить, что основной домен был автоматически сертифицирован с помощью команды:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com.

Итак, в конце, когда я пытаюсь перейти к www.nameSite.com или nameSite.com все сертифицировано, но всякий раз, когда я пробую любой * .nameSite.com, браузер сообщает мне, что соединение не зашифровано.

Спасибо за вашу помощь.