Как правильно использовать certbot для поддоменов, обслуживаемых через nginx?

Как правильно использовать certbot для поддоменов, обслуживаемых через nginx?

Думаю, я что-то упускаю, потому что каждый раз, когда я пытаюсь загрузить контент, перейдя по поддомену в браузере, появляется сообщение «небезопасно», хотя я выполнил все последующие шаги и sudo certbot --nginxошибок не возникло.

Вот мой файл конфигурации для vhost:

server {                                                                                                                                         
        listen 80;                                                                                                                               
        listen [::]:80;                                                                                                                          

        root /var/www/lms/;                                                                                                                      

        server_name lms.blainelafreniere.io;                                                                                                     

        location / {                                                                                                                             
                try_files $uri /index.html;                                                                                                      
        }                                                                                                                                        
}                                                                                                                                                

server {

        server_name lms-api.blainelafreniere.io;

        location / {
                proxy_pass http://127.0.0.1:3001;
        }

        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/lms-api.blainelafreniere.io/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/lms-api.blainelafreniere.io/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 {
    if ($host = lms-api.blainelafreniere.io) {

        return 301 https://$host$request_uri;
    } # managed by Certbot
    listen 80;
    listen [::]:80;

    server_name lms-api.blainelafreniere.io;
    return 404; # managed by Certbot
}

Не знаю, имеет ли это значение, но... основной корневой домен, blainelafreniere.io, указывает на совершенно другой VPS. Мой домен blainelafreniere.io защищен собственным сертификатом SSL, и в настоящее время я пытаюсь сгенерировать новый сертификат SSL только для поддомена, в данном случае lms-api.blainelafreniere.io.

blainelafreniere.io => сервер A lms.blainelafreniere.io, lms-api.blainelafreniere.io => сервер B

Нужно ли использовать сертификат для основного домена для защиты поддоменов? Или я могу сгенерировать новый сертификат для каждого поддомена?

решение1

СHTTP-01 вызоввы можете получить сертификаты только для указанных (возможно с несколькими SAN) имен хостов. Согласно Certificate Transparencyжурналы дляblainelafreniere.ioу вас нет wildcard-сертификата для *.blainelafreniere.io, поэтому вы даже не можете использовать тот же сертификат для своих поддоменов. (Получение wildcard-сертификатов возможно с помощьюDNS-01 вызов, но это не обязательно и даже не оптимально для данного случая.)

В журналах также указано, что Let's Encrypt успешно выдал сертификаты для обоих ваших поддоменов ( lms.apiи lms), иэто правильный способ сделать это.

Для автоматического продления необходимо сохранить http://example.com/.well-known/acme-challenge/доступным и обслуживающим местоположение, указанное в конфигурации Let´s Encrypt / Certbot (например, в разделе /etc/letsencrypt/renewal/).

В настоящее время сервер на 34.200.239.16вообще не отвечает на HTTPS-запросы. Это не проблема с сертификатами; либо ваш Nginx не слушает порт 443, либо его блокирует какой-то брандмауэр:

$ dig lms.blainelafreniere.io +short
34.200.239.16

$ dig lms-api.blainelafreniere.io +short
34.200.239.16

nc 34.200.239.16 443 -nvvv
(UNKNOWN) [34.200.239.16] 443 (https) : Connection timed out
 sent 0, rcvd 0

Связанный контент