# Установка бесплатного SSL-сертификата Let's Encrypt на сервер с Nginx или Apache

**Что такое Let's Encrypt и зачем нужен SSL-сертификат**

Let's Encrypt — это открытая сертификационная организация, предоставляющая бесплатные SSL-сертификаты, которые позволяют зашифровать соединение между сайтом и пользователем. SSL-сертификат:

* Обеспечивает HTTPS-соединение
* Защищает данные от перехвата
* Повышает доверие пользователей
* Улучшает SEO-позиции в поисковых системах

Установка SSL-сертификата является обязательным шагом для любого современного сайта, будь то личный блог, интернет-магазин или корпоративный портал.

***

### **Подготовка сервера к установке SSL-сертификата**

Перед началом установки необходимо обновить систему и репозитории:

```bash
sudo apt-get -y update && sudo apt-get -y dist-upgrade
```

Эта команда обновит список доступных пакетов и выполнит полное обновление установленных компонентов. Рекомендуется запускать её на актуальной версии Ubuntu или Debian.

***

### **Установка Certbot — инструмента для работы с Let's Encrypt**

Certbot — это официальный клиент Let's Encrypt. Для его установки выполните:

```bash
sudo apt-get -y install certbot
```

После завершения установки вы сможете использовать Certbot для генерации, продления и управления SSL-сертификатами.

***

### **Установка дополнительных модулей Certbot для Nginx и Apache**

Для интеграции Certbot с конкретным веб-сервером необходимо установить соответствующий плагин.

**Для Nginx:**

```bash
sudo apt-get -y install python3-certbot-nginx
```

**Для Apache2:**

```bash
sudo apt-get -y install python3-certbot-apache
```

После установки плагинов можно переходить к генерации сертификатов.

***

### **Условия для успешной генерации SSL-сертификата**

Перед запуском Certbot убедитесь:

* Веб-сервер (Nginx или Apache) **работает**
* Указанный домен **направлен на IP-адрес сервера**
* Порт 80 (HTTP) **открыт**

Это критически важно, так как Certbot использует HTTP-вызов для валидации домена.

***

### **Генерация SSL-сертификата через Certbot для Nginx**

Если вы используете Nginx, запустите следующую команду:

```bash
sudo certbot certonly --nginx -d yoursite.com
```

Замените `yoursite.com` на фактический домен. После завершения процесса сертификат будет сохранён в `/etc/letsencrypt/live/yoursite.com/`.

***

### **Генерация SSL-сертификата через Certbot для Apache**

Для Apache используется другая команда:

```bash
sudo certbot certonly --apache -d yoursite.com
```

Certbot автоматически определит конфигурации Apache и предложит автоматическое внедрение SSL в конфигурационные файлы.

***

### **Альтернатива: Генерация через standalone (без веб-сервера)**

Если веб-сервер не может быть запущен (например, порт 80 занят или сайт временно отключён), можно использовать режим standalone:

```bash
sudo certbot certonly --standalone -d yoursite.com
```

В этом случае Certbot поднимает собственный временный HTTP-сервер для прохождения валидации.

***

### **Настройка автоматического обновления SSL-сертификата**

Let's Encrypt сертификаты действуют 90 дней. Чтобы продлить сертификат вручную, используйте:

```bash
sudo certbot renew
```

Чтобы настроить **автоматическое продление**, добавьте задачу в `cron` или используйте системный таймер:

```bash
sudo systemctl list-timers | grep certbot
```

Certbot автоматически проверяет сертификаты дважды в день и обновляет их при необходимости.

***

### **Проверка валидности и сроков действия сертификата**

Для проверки статуса сертификата используйте:

```bash
sudo certbot certificates
```

Команда отобразит все текущие сертификаты, дату истечения и путь к ключам.

***

### **Распространённые ошибки и их решение**

| Ошибка                   | Причина                    | Решение                                  |
| ------------------------ | -------------------------- | ---------------------------------------- |
| Timeout при генерации    | Порт 80 закрыт             | Откройте порт в фаерволе                 |
| "Domain not found"       | DNS не настроен            | Проверьте A-запись домена                |
| "Permission denied"      | Недостаточно прав          | Запустите с sudo                         |
| Сертификат не применился | Автонастройка не сработала | Внесите SSL вручную в конфиг веб-сервера |

***

### **Заключение: Быстрое и надёжное шифрование с Let's Encrypt**

Let's Encrypt предоставляет удобный и бесплатный способ обеспечить безопасность вашего сайта. С Certbot процесс установки и продления сертификатов полностью автоматизирован, особенно при использовании Nginx или Apache. Следуя этой инструкции, вы сможете за несколько минут получить действующий сертификат и активировать HTTPS на своём домене.

***

### **Часто задаваемые вопросы (FAQ)**

<details>

<summary><strong>Можно ли использовать Let's Encrypt для поддоменов?</strong><br>Да. Просто укажите поддомен: <code>-d sub.yoursite.com</code>.</summary>

</details>

<details>

<summary>Работает ли Let's Encrypt с IPv6?</summary>

Да. Главное, чтобы DNS-записи были корректны.

</details>

<details>

<summary>Можно ли установить сертификат на локальный IP?</summary>

Нет. Только на публичные домены с доступом по HTTP.

</details>

<details>

<summary>Что делать, если срок действия сертификата истёк?</summary>

Запустите `sudo certbot renew` и перезапустите веб-сервер.

</details>

<details>

<summary>Можно ли использовать сертификат с другими веб-серверами (например, Caddy)?</summary>

Да. Сертификат можно экспортировать из `/etc/letsencrypt/` и использовать вручную.

</details>

<details>

<summary>Работает ли Let's Encrypt с wildcard-сертификатами?</summary>

Да, при использовании DNS-челленджа.

</details>

***

#### **Полезные ресурсы**

* [Официальный сайт Let's Encrypt](https://letsencrypt.org/)
* [Документация Certbot](https://certbot.eff.org/)
* [Страница загрузки Certbot](https://certbot.eff.org/instructions)

***

### Наши ресурсы

**Telegram-канал:** <https://t.me/u1host>\
**U1HOST:** [https://u1host.com](https://u1host.com/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.u1host.com/software-setup/ustanovka-besplatnogo-ssl-sertifikata-lets-encrypt-na-server-s-nginx-ili-apache.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
