====== Установка плагина certbot nginx для SSL Lets'Encrypt ======
===== Установка из портов =====
cd /usr/ports/security/py-certbot-nginx
make install clean
===== Конфигурация nginx =====
# Создаем директорию для проверки сертификатов в nginx
mkdir -p /usr/local/www/.well-known/acme-challenge
В виртуальном хосте ОС FreeBSD нужного домена создаем новый локейшн
# FreeBSD
location /.well-known/acme-challenge/ {
root /usr/local/www;
default_type text/plain;
}
В виртуальном хосте ОС Debian нужного домена чуть другие пути.
# Debian, Ubuntu, etc
location /.well-known/acme-challenge/ {
root /var/www/html;
default_type text/plain;
}
Копируем настройки SSL для nginx
# Debian, Ubuntu
cp /usr/lib/python3/dist-packages/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf \
/etc/letsencrypt/options-ssl-nginx.conf
# FreeBSD
openssl dhparam -out /usr/local/etc/letsencrypt/dhparams.pem 2048
# Debian, Ubuntu
openssl dhparam -out /etc/letsencrypt/ssl-dhparams.pem 2048
===== Получение сертификатов SSL =====
Получаем сертификат, выполняя certbot
# тестируем
certbot certonly --webroot -w /usr/local/nginx -d srv206.vps-server.ru --email support@vps-server.ru --dry-run
# если все успешно, то убираем --dry-run и выполняем еще раз!
Если все успешно, то убираем --dry-run и выполняем еще раз!
===== Шаблоны файлов конфига nginx =====
server {
server_name ~^www\.(.*)$;
return 301 $scheme://$1$request_uri;
}
server {
listen 80;
server_name ###domain### www.###domain###;
error_log /var/log/nginx/###domain###-error.log warn;
access_log /var/log/nginx/###domain###.log;
location / {
###redirect_enable###
return 301 https://$host$request_uri;
root /var/www/html/;
index index.html index.htm index.nginx-debian.html;
}
location /.well-known/acme-challenge/ {
root /var/www/html/;
default_type text/plain;
}
}
server {
listen 443 ssl;
server_name ###domain### www.###domain###;
error_log /var/log/nginx/###domain###-error.log warn;
access_log /var/log/nginx/###domain###.log;
ssl_certificate /etc/letsencrypt/live/###domain###/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/###domain###/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
if ($host ~* ^www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ $scheme://$host_without_www$1 permanent;
}
real_ip_header X-Real-IP;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://###local_ip###;
}
}