Как установить SSL-сертификат на VPS
Это руководство объясняет, как установить бесплатный SSL-сертификат с Let's Encrypt и Certbot на вашем VPS для Nginx или Apache.
Заказать сервер
Для размещения ваших защищённых веб-сайтов, HostMyServers предлагает несколько вариантов:
- Performance VPS - Идеально для сайтов с высоким трафиком
- NVMe VPS - Отличное соотношение цены и качества
- Эко выделенные серверы - Для проектов, требующих больше ресурсов
- Выделенные серверы Performance - Максимальная производительность
Предварительные требования
- SSH-доступ как root или пользователь с правами sudo
- Доменное имя, указывающее на IP-адрес вашего сервера (DNS-запись A или AAAA)
- Порты 80 (HTTP) и 443 (HTTPS) открыты в брандмауэре
- Nginx или Apache установлен и настроен
- Обновлённая система Debian/Ubuntu
Установка Certbot
Рекомендуемый метод: через Snap
Этот метод гарантирует наличие последней версии Certbot:
sudo apt update
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Альтернативный метод: через APT
Для Nginx:
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
Для Apache:
sudo apt update
sudo apt install certbot python3-certbot-apache -y
Проверка конфигурации веб-сервера
Перед получением сертификата убедитесь, что ваш домен правильно настроен.
Для Nginx
Убедитесь, что блок сервера содержит правильный server_name:
sudo nano /etc/nginx/sites-available/ваш_домен
Файл должен содержать:
server {
listen 80;
listen [::]:80;
server_name ваш_домен.com www.ваш_домен.com;
root /var/www/ваш_домен;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
Проверьте и перезагрузите конфигурацию:
sudo nginx -t
sudo systemctl reload nginx
Для Apache
Проверьте ваш VirtualHost:
sudo nano /etc/apache2/sites-available/ваш_домен.conf
Файл должен содержать:
<VirtualHost *:80>
ServerName ваш_домен.com
ServerAlias www.ваш_домен.com
DocumentRoot /var/www/ваш_домен
<Directory /var/www/ваш_домен>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/ваш_домен-error.log
CustomLog ${APACHE_LOG_DIR}/ваш_домен-access.log combined
</VirtualHost>
Активируйте сайт и перезагрузите:
sudo a2ensite ваш_домен.conf
sudo apachectl configtest
sudo systemctl reload apache2
Получение SSL-сер тификата
С Nginx
Запустите Certbot с плагином Nginx:
sudo certbot --nginx -d ваш_домен.com -d www.ваш_домен.com
Certbot:
- Проверит владение доменом
- Получит сертификат
- Автоматически настроит Nginx для HTTPS
- Настроит перенаправление HTTP → HTTPS
С Apache
Запустите Certbot с плагином Apache:
sudo certbot --apache -d ваш_домен.com -d www.ваш_домен.com
Certbot:
- Проверит владение доменом
- Получит сертификат
- Автоматически настроит Apache для HTTPS
- Включит модуль SSL при необходимости
Во время выполнения Certbot спросит, хотите ли вы автоматически перенаправлять HTTP-трафик на HTTPS. Выберите да для лучшей безопасности.
Ручная настройка (опционально)
Если вы предпочитаете настроить SSL вручную, используйте режим certonly:
sudo certbot certonly --webroot -w /var/www/ваш_домен -d ваш_домен.com -d www.ваш_домен.com
Ручная настройка Nginx
Измените блок сервера:
# Перенаправление HTTP на HTTPS
server {
listen 80;
listen [::]:80;
server_name ваш_домен.com www.ваш_домен.com;
return 301 https://$host$request_uri;
}
# Конфигурация HTTPS
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ваш_домен.com www.ваш_домен.com;
ssl_certificate /etc/letsencrypt/live/ваш_домен.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш_домен.com/privkey.pem;
# Рекомендуемые параметры SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
root /var/www/ваш_домен;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
Ручная настройка Apache
Включите модуль SSL:
sudo a2enmod ssl
sudo a2enmod rewrite
Создайте или измените VirtualHost SSL:
# Перенаправление HTTP на HTTPS
<VirtualHost *:80>
ServerName ваш_домен.com
ServerAlias www.ваш_домен.com
Redirect permanent / https://ваш_домен.com/
</VirtualHost>
# Конфигурация HTTPS
<VirtualHost *:443>
ServerName ваш_домен.com
ServerAlias www.ваш_домен.com
DocumentRoot /var/www/ваш_домен
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/в аш_домен.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ваш_домен.com/privkey.pem
# Рекомендуемые параметры SSL
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
<Directory /var/www/ваш_домен>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/ваш_домен-ssl-error.log
CustomLog ${APACHE_LOG_DIR}/ваш_домен-ssl-access.log combined
</VirtualHost>
Перезагрузите Apache:
sudo systemctl restart apache2
Автоматическое продление
Сертификаты Let's Encrypt действительны 90 дней. Certbot автоматически настраивает продление.
Проверка автоматического продления
Протестируйте продление без фактического выполнения:
sudo certbot renew --dry-run
Проверка таймера systemd
sudo systemctl status certbot.timer
Принудительное продление
При необходимости вы можете принудительно продлить:
sudo certbot renew