При миграции на новый сервер SSL-сертификат нужно либо перенести (если вы его купили), либо выпустить заново (если использовали Let's Encrypt). В большинстве случаев проще и быстрее выпустить новый бесплатный Let's Encrypt — это занимает 2–5 минут.
Когда переносить, а когда перевыпускать
| Ситуация | Рекомендация |
|---|---|
| Let's Encrypt (бесплатный) | Выпустить заново на новом сервере |
| Платный SSL (Sectigo, Comodo, DigiCert) | Перенести или переоформить бесплатно |
| EV SSL (зелёная строка) | Переоформить — требует верификацию компании |
| Wildcard SSL | Перенести (файл .crt + .key) или переоформить |
Вариант 1: Let's Encrypt на новом сервере (рекомендуется)
# Установить Certbot
apt install certbot python3-certbot-nginx -y
# Выпустить сертификат для домена
# (DNS должен уже указывать на новый сервер!)
certbot --nginx -d example.com -d www.example.com
# Или в standalone-режиме (до настройки Nginx)
certbot certonly --standalone -d example.com -d www.example.com
# Автообновление — certbot устанавливает таймер автоматически
systemctl status certbot.timer
Вариант 2: Перенос платного SSL-сертификата
Экспорт из cPanel
# cPanel → SSL/TLS → Manage SSL Sites
# Скопировать три файла:
# - Certificate (CRT)
# - Private Key (KEY)
# - CA Bundle (Chain)
Установка на Nginx
# Сохранить файлы на новом сервере
# /etc/ssl/example.com.crt ← Certificate + CA Bundle (объединить!)
# /etc/ssl/example.com.key ← Private Key
cat example.com.crt ca-bundle.crt > /etc/ssl/example.com-fullchain.crt
# Конфиг Nginx
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/example.com-fullchain.crt;
ssl_certificate_key /etc/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
}
nginx -t && systemctl reload nginx
Установка на Apache
# /etc/apache2/sites-available/example.com-ssl.conf
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/example.com.crt
SSLCertificateKeyFile /etc/ssl/example.com.key
SSLCertificateChainFile /etc/ssl/ca-bundle.crt
a2enmod ssl
a2ensite example.com-ssl
systemctl reload apache2
Проверка SSL после переноса
# Проверить срок и цепочку доверия
openssl s_client -connect example.com:443 -servername example.com < /dev/null
# Проверить онлайн
# https://www.ssllabs.com/ssltest/analyze.html?d=example.com
Тест до смены DNS: Проверить работу SSL на новом сервере до переключения DNS можно через SNI:
curl -vI --resolve example.com:443:NEW-SERVER-IP https://example.com/ 2>&1 | grep -E "SSL|certificate"
Приватный ключ конфиденциален! Никогда не передавайте
.key файл по email или незашифрованным каналам. Храните его только на сервере с правами 600 (chmod 600 example.com.key).