Сайт по SSL Apache, Nginx Ubuntu 20.04
Мы узнали что такое хостинг и сервер и их различия. Взяли в аренду Server VDS-VPS установили Apache и Nginx, осталось настроить доступ по HTTPS, HTTP2 добавив к нему шифрование SSL от Let’s Encrypt.
Так как настроили сайт по последним технологиям использовав Apache, Nginx и PHP-FPMТо подключать SSL будем к Nginx.
Если вы настроили сайт без использования Nginx, а только на Apache, то установите Certbot для Apache.
apt-get install python3-certbot-apache
.Сертификаты TLS/SSL можно сгенерировать с помощью Certbot. Его плагин для Nginx автоматически перенастроит веб-сервер и обновит конфиг.
Установите Certbot для Nginx:
apt install python3-certbot-nginx
Для более ранних версий Убунту может понадобиться установить официальный репозиторий Certbot:
sudo add-apt-repository ppa:certbot/certbot
Чтобы подтвердить действие, нажмите ввод. Затем обновите индекс пакетов.
sudo apt update
И установка без цифры 3 в python, пример
apt install python-certbot-nginx
После установки certbot регистрируем домен и выписываем на него сертификат SSL от Letsencrypt
Если у вас домен с www, то пишем как в примере ниже, меняя domain на свой адрес. Если без www то без -d www.domain.com
certbot --nginx -d domain.com -d www.domain.com
Вас попросят ввести адрес электронной почты для уведомлений о продлении и безопасности. Ниже на картинке пример.
Согласитесь с Условиями использования
Укажите, следует ли получать электронные письма от EFF
Выберите, следует ли перенаправлять HTTP-трафик на HTTPS — 1 (без перенаправления, без дальнейших изменений на сервере) или 2 (перенаправлять все запросы на HTTPS) Лучше выбрать 2
Для Апаче
Создайте сертификат SSL для своего домена (ов):
certbot --apache -d domain.com
Или, если вы хотите создать SSL, включающий запросы «www»:
certbot --apache -d domain.com -d www.domain.com
Введите адрес электронной почты для уведомлений о продлении и безопасности
Согласитесь с Условиями использования
Укажите, следует ли получать электронные письма от EFF
Выберите, следует ли перенаправлять HTTP-трафик на HTTPS — 1 (без перенаправления, без дальнейших изменений на сервере) или 2 (перенаправлять все запросы на HTTPS)
Вариант настройки .config файла в Nginx с перенаправлением.
server {
listen 80;
listen [::]:80;
server_name domain.com www.domain.com;
# редирект на HTTPS
return 301 https://$server_name$request_uri;
server_tokens off;
}
server {
server_name domain.com www.domain.com;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain.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
}
Так же если вы заметили мы используем listen 443 SSL HTTP2 если у вас его нет, можете вписать руками. Очередность вставки ssl_certificate может отличаться от примера, если добавляете руками, смотрите чтобы не повторялись записи.
Без перенаправления
server {
listen 80;
listen [::]:80;
server_name domain.com www.domain.com;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl hhtp2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain.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
}
Проверяем или нет ошибок
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перегружаем
service nginx restart
Файл автоматического обновления сертификата находиться
/lib/systemd/system/certbot.timer
Запрос статуса таймера
systemctl status certbot.timer
Чтобы протестировать процесс обновления, можно сделать запуск «вхолостую» с помощью certbot
certbot renew --dry-run
Чтобы удалить сертификат используйте следующие команды.
удаляет информацию с серверов Letsenrypt domain меняем на свой
certbot revoke --cert-path /etc/letsencrypt/live/domain.com/cert.pem
удаляет сертификаты и все симлинки на локальном сервере
certbot delete --cert-name domain.com