From 5e8fa8fc6e1caf392151ef63b67320042b822cf8 Mon Sep 17 00:00:00 2001 From: Snezhana Date: Fri, 3 Apr 2026 22:59:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Шаг 1 и шаг 3 не были описаны, по необходимости можно дополнить. --- README.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/README.md b/README.md index 334b231..a75da8e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,71 @@ # Matrix_server_sertificate_renew +
+Зачем нужен SSL-сертификат? +SSL-сертификат - это виртуальный документ, который содержит данные об организации, её владельце и подтверждает их существование. Позволяет узнать сервер и подтвердить безопасность сайта. +Использование сертификата безопасности для сайта гарантирует: + +Подлинность ресурса, к которому обращается пользователь. Это повышает у посетителей уровень доверия. +Целостность передаваемой информации. При транспортировке от сервера к браузеру данные не изменятся и не потеряются. +Конфиденциальность. 256-разрядное шифрование исключает доступ злоумышленников к информации. + +
+ +Для создания сертификата Let's Encrypt требуется запустить docker-образ certbot/certbot для выполнения проверки и получения сертификата. Перед этим необходимо настроить Nginx для проверки домена. +## Шаг 1. Настройка конфигурации Nginx + +## Шаг 2. Получение сертификата с помощью Certbot +```bash +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
+``` +
+Что здесь происходит: +-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. +### Открытие для редактирования: +```bash +crontab -e +``` +### Редактирование планировщика задач: +```bash +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. +
\ No newline at end of file