Запись на память: случай с сервером onlyoffice.logoakademia.ru
У меня на сервере работал ONLYOFFICE Document Server под доменом onlyoffice.logoakademia.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.logoakademia.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.logoakademia.ru;
ssl_certificate /etc/letsencrypt/live/onlyoffice.logoakademia.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onlyoffice.logoakademia.ru/privkey.pem;
# ONLYOFFICE-специфичные настройки
set $secure_link_secret ваш_секрет;
include /etc/nginx/includes/ds-*.conf;
}
sudo certbot certonly --webroot -w /var/www/onlyoffice -d onlyoffice.logoakademia.ru
После этого Certbot:
/etc/letsencrypt/live/onlyoffice.logoakademia.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 — бесплатно, автоматически, надёжно.
Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!