Мой сервер работает на LEMP Stack Ubuntu 16.04 и последней версии nginx
На моем сервере уже установлен SSL-сертификат для следующих доменов и поддоменов: example.com
, domain1.example.com
и все работает нормально.
Я хочу создать новый сертификат для domain2.example.com
Для этого я попробовал эту команду:
sudo certbot --nginx -d example.com -d domain1.example.com -d domain2.example.com --expand
Не удалось найти сертификат или ключевую директиву в /etc/nginx/sites-enabled/example.com для набора (['www.example.com', '* .example.com', 'example.com']). VirtualHost не был изменен.
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name example.com *.example.com www.example.com ;
}
Что я делаю не так ? Как я могу воссоздать сертификат, чтобы добавить domain2
?
Один из лучших способов - использовать плагин webroot (описанный https://certbot.eff.org/#centosrhel7-other). Советую поступить следующим образом:
Добавьте следующую директиву местоположения к хостам (блокам сервера), которые вы хотите обработать с помощью certbot, и получить для этого сертификаты:
location /.well-known {
root /usr/share/nginx/html;
}
Установить certbot
certbot certonly
команда/usr/share/nginx/html
(как в директиве location root)./etc/letsencrypt/live/youdomain.com/fullchain.pem
.Добавить в серверный блок:
ssl on;
ssl_certificate /etc/letsencrypt/live/youdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/youdomain.com/privkey.pem;
Вот и все;) После этого можно легко продлить сертификаты запуском certbot renew
команда.
Как это устроено?
Когда мы добавляем директиву местоположения, мы выбираем настраиваемую корневую папку для /.well-known
расположение. Certbot создает файлы внутри .well-known
каталог и внешний сервер аутентификации (ACME CA) проверяют файлы в этой папке. Если вы управляете множеством доменов или используете nginx в качестве прокси (!), Очень полезно использовать один общий корень для /.well-known
местоположение, потому что в этом случае у вас может не быть корневого каталога на машине с nginx (например, у вас есть nginx, установленный на одном VPS в качестве прокси-сервера для Apache, установленного на другом VPS).
Удачи.
Для меня я вошел в /etc/nginx/sites-enabled
папка и вручную удалил ошибочные файлы виртуального хоста с символьной связью, которые, как я думал, я удалил ранее. Сюрприз, они все еще были там. Так что обязательно сделай sudo rm -rf [filename]
в этой папке. Затем перезапустите nginx через sudo nginx -s reload
и снова запустите команду certbot, она должна быть GTG.
Вот что мне пришлось сделать.
certbot certificates
expand
sudo certbot certonly --cert-name example.com -d example.com -d domain1.example.com -d domain2.example.com --expand
.2: Place files in webroot directory (webroot)
webroot
что было для меня /var/www/laravel