# 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.