Я полагаю, что мне что-то не хватает, потому что каждый раз, когда я пытаюсь загрузить контент, нажимая на поддомен в моем браузере, он говорит «небезопасно», хотя я выполнил шаги, которые следовали после запуска 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
Нужно ли использовать сертификат для основного домена для защиты поддоменов? Или я могу сгенерировать новый сертификат для каждого поддомена?
С HTTP-01 вызов вы можете получить сертификаты только для указанных (возможно, с несколькими SAN) имен хостов. Согласно прозрачности сертификата журналы для blainelafreniere.io
у вас нет подстановочного сертификата для *.blainelafreniere.io
, поэтому вы даже не можете использовать один и тот же сертификат для своих поддоменов. (Получение подстановочных сертификатов возможно с 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