Запись на память: случай с сервером onlyoffice.logo.ru
У меня на сервере работал ONLYOFFICE Document Server под доменом onlyoffice.logo.ru. SSL-сертификат был получен вручную и лежал в /etc/ssl/onlyoffice/. Со временем сертификат начал подходить к концу, а автоматическое обновление не работало, да еще сертификат был скачан с другого сервера вручную. Автообновление даже если бы работало то не сработало бы на этот серт. Ну и ошибочка в конфиге, оба порта были в одном блоке server.
Почему? Потому что Let's Encrypt при обновлении требует доступ по HTTP (порт 80) для прохождения проверки HTTP-01 challenge. А у меня в Nginx был только блок на порту 443 — порт 80 либо не слушался, либо был неправильно настроен.
Нельзя держать listen 80 и listen 443 ssl в одном server-блоке — это ломает ACME-проверку. Нужно два отдельных блока:
sudo mkdir -p /var/www/onlyoffice/.well-known/acme-challenge
sudo chown -R www-data:www-data /var/www/onlyoffice
Это путь, куда Certbot будет класть временные файлы для подтверждения владения доменом.
Пример корректного конфига (/etc/nginx/conf.d/ds.conf):
# HTTP — порт 80
server {
listen 80;
server_name onlyoffice.logo.ru;
location ^~ /.well-known/acme-challenge/ {
root /var/www/onlyoffice;
default_type "text/plain";
try_files $uri =404;
}
location / {
return 301 https://$server_name$request_uri;
}
}
# HTTPS — порт 443
server {
listen 443 ssl http2;
server_name onlyoffice.logo.ru;
ssl_certificate /etc/letsencrypt/live/onlyoffice.logo.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onlyoffice.logo.ru/privkey.pem;
# ONLYOFFICE-специфичные настройки
set $secure_link_secret ваш_секрет;
include /etc/nginx/includes/ds-*.conf;
}
sudo certbot certonly --webroot -w /var/www/onlyoffice -d onlyoffice.logo.ru
После этого Certbot:
/etc/letsencrypt/live/onlyoffice.logo.ru/,sudo nginx -t
sudo systemctl reload nginx
sudo certbot certificates — посмотреть список сертификатов.sudo certbot renew --dry-run — протестировать обновление.sudo certbot delete --cert-name имя — удалить ненужный сертификат (например, от другого сервера).systemctl list-timers | grep certbot — проверить автообновление.ds-example) в продакшене — он не защищён.ufw allow 80).Теперь мой ONLYOFFICE работает с валидным, автоматически обновляемым SSL-сертификатом от Let's Encrypt. Всё просто — если знать, что порт 80 обязателен для обновления, даже если сайт доступен только по HTTPS.
Let's Encrypt — бесплатно, автоматически, надёжно.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!