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

71 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Matrix_server_sertificate_renew
<details>
<summary>Зачем нужен SSL-сертификат?</summary>
SSL-сертификат - это виртуальный документ, который содержит данные об организации, её владельце и подтверждает их существование. Позволяет узнать сервер и подтвердить безопасность сайта.
Использование сертификата безопасности для сайта гарантирует:
Подлинность ресурса, к которому обращается пользователь. Это повышает у посетителей уровень доверия.
Целостность передаваемой информации. При транспортировке от сервера к браузеру данные не изменятся и не потеряются.
Конфиденциальность. 256-разрядное шифрование исключает доступ злоумышленников к информации.
</details>
Для создания сертификата 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 <address>
```
<details>
<summary>Что здесь происходит:</summary>
-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 метод.
</details>
После успешного выполнения появится сообщение, что сертификат сохранен. Его файлы будут лежать в папке /opt/letsencrypt/live/address
## Шаг 3. Настройка HTTPS в Nginx
## Шаг 4. Настройка автоматического обновления
Сертификаты Let's Encrypt действуют 90 дней, но можно настроить автоматическое продление.
Самый простой способ - добавить задачу в <abbr title="Планировщик задач в Unix-подобных ОС">crontab</abbr>.
### Открытие для редактирования:
```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
```
<details>
<summary>Описание команды</summary>
Первые 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.
</details>