Matrix_server_sertificate_r.../README.md
Snezhana 5e8fa8fc6e Обновить README.md
Шаг 1 и шаг 3 не были описаны, по необходимости можно дополнить.
2026-04-03 22:59:52 +03:00

6.1 KiB
Raw Permalink Blame History

Matrix_server_sertificate_renew

Зачем нужен SSL-сертификат? SSL-сертификат - это виртуальный документ, который содержит данные об организации, её владельце и подтверждает их существование. Позволяет узнать сервер и подтвердить безопасность сайта.

Использование сертификата безопасности для сайта гарантирует:

Подлинность ресурса, к которому обращается пользователь. Это повышает у посетителей уровень доверия. Целостность передаваемой информации. При транспортировке от сервера к браузеру данные не изменятся и не потеряются. Конфиденциальность. 256-разрядное шифрование исключает доступ злоумышленников к информации.

Для создания сертификата Let's Encrypt требуется запустить docker-образ certbot/certbot для выполнения проверки и получения сертификата. Перед этим необходимо настроить Nginx для проверки домена.

Шаг 1. Настройка конфигурации Nginx

Шаг 2. Получение сертификата с помощью Certbot

docker run -it --rm \
  -v "/opt/letsencrypt:/etc/letsencrypt" \
  -v "/opt/matrix/nginx_data/well-known:/var/www/certbot" \
  certbot/certbot certonly --webroot \
  --webroot-path=/var/www/certbot \
  --email example@example.com \
  --agree-tos \
  --no-eff-email \
  -d <address>
Что здесь происходит: -v "/opt/letsencrypt:/etc/letsencrypt": Монтирует папку на сервере, где будут сохранены сертификаты.

-v "/opt/matrix/nginx_data/well-known:/var/www/certbot": Монтирует папку, в которую Certbot поместит временный файл для проверки. Обратите внимание, что путь внутри контейнера (/var/www/certbot) должен соответствовать тому, который был указан в конфигурации Nginx (в данном случае root /var/www/certbot).

certonly --webroot: Указывает Certbot получить сертификат, используя webroot метод.

После успешного выполнения появится сообщение, что сертификат сохранен. Его файлы будут лежать в папке /opt/letsencrypt/live/address

Шаг 3. Настройка HTTPS в Nginx

Шаг 4. Настройка автоматического обновления

Сертификаты Let's Encrypt действуют 90 дней, но можно настроить автоматическое продление.

Самый простой способ - добавить задачу в crontab.

Открытие для редактирования:

crontab -e

Редактирование планировщика задач:

0 2 * * * docker run --rm -v "/opt/letsencrypt:/etc/letsencrypt" -v "/opt/matrix/nginx_data/well-known:/var/www/certbot" certbot/certbot renew --webroot --webroot-path=/var/www/certbot --quiet && docker exec nginx nginx -s reload
Описание команды Первые 5 параметров указывают время. 0 минут, 2 часа, каждый день, каждый месяц, каждый год. Т.е. команда будет запускаться автоматически каждый день в 2 часа ночи. docker run - создание и запуск нового контейнера docker --rm - автоматическое удаление контейнера после завершения -v - монтирование томов (связывание папки на сервере с папками внутри контейнера Certbot) Путь на хосте - /opt/letsencrypt; путь в контейнере - /etc/letsencrypt. Там хранятся сертификаты и ключи. Путь на хосте - /opt/matrix/nginx_data/well-known; путь в контейнере - /var/www/certbot. Там хранятся временные файлы для проверки домена.

Таким образом, сертификаты сохраняются на хост-машине и не теряются после удаления контейнера. Nginx может читать сертификаты из /opt/letsencrypt/live... . Certbot кладет /var/www/certbot/.well-known/acme-challenge/, а на хосте они оказываются в /opt/matrix/nginx_data/well-known/.well-known/acme-challenge/, откуда Nginx их отдаёт Let's Encrypt.

Параметры certbot renew: renew - проверка и обновление сертификатов, если их срок действия истекает --webroot - использование веб-верификации (через файлы в папке) --webroot-path... - указание папки, где Certbot будет создавать временные файлы для проверки --quiet - тихий режим (без вывода всех логов, сообщения появятся только в случае ошибки).

&& docker exec nginx nginx -s reload - тут работает логическая связка "команда1 && команда2". Команда2 выполняется только если команда1 завершилась успешно. В этом случае мы перезагружаем Nginx.