Створення сертифіката let - s encrypt для apache в debian 8

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Даний посібник допоможе налаштувати TLS / SSL сертифікат Let's Encrypt для Apache на сервері Debian 8 і автоматизувати його оновлення.

SSL-сертифікати необхідні веб-серверів для шифрування трафіку між сервером і клієнтом, що підвищує безпеку даних користувачів і додатки. Сервіс Let's Encrypt дозволяє швидко і просто отримати такий сертифікат.

вимоги

1: Установка клієнта certbot

Спочатку потрібно встановити certbot. Це клієнт Let's Encrypt, який дозволяє отримати SSL-сертифікат.

Пакету certbot немає в офіційному репозиторії Debian 8. Завантажити пакет certbot можна з backports-сховища Jessie.

Додайте цей репозиторій:

Оновлення індекс пакетів:

sudo apt-get update

Тепер можна встановити пакет python-certbot-apache.

Примітка. Backports-репозиторії не рекомендується використовувати для загальносистемних оновлень. Встановлюйте тільки необхідні вам пакети. Backports-пакети менш сумісні, ніж пакети з основних репозиторіїв.

Щоб уникнути випадкової установки або оновлення пакетів з backports-сховища, використовуйте прапор -t перед ім'ям сховища.

sudo apt-get install certbot -t jessie-backports

Клієнт certbot готовий до роботи.

2: Налаштування Apache

Домени, для яких призначений сертифікат, можна передати утиліті certbot в якості аргументів. Однак certbot також може прочитати їх в конфігураційному файлі Apache. Для цього вкажіть домен в директиві ServerName, а піддомен - в ServerAlias.

Якщо сервер Apache ні встановлено раніше, він був включений в установку пакета python-certbot-apache. Відкрийте віртуальний хост за замовчуванням:

sudo nano /etc/apache2/sites-available/000-default.conf

Додайте в файл директиву ServerName і вкажіть в ній доменне ім'я. Альтернативні або додаткові домени, які повинен обслуговувати сервер, потрібно додати в директиву ServerAlias.

Налаштування виглядають приблизно так:


.
ServerName example.com
ServerAlias ​​www.example.com
.

Щоб зберегти і закрити файл, натисніть CTRL + X, Y і Enter.

Перевірте файл на наявність помилок:

sudo apache2ctl configtest

Команда повинна повернути:

Якщо у файлі виявлені помилки, виправте їх. А після перезапуску веб-сервер:

sudo systemctl restart apache2

3: Налаштування брандмауера

Якщо ви включили брандмауер, потрібно розблокувати трафік SSL.

Примітка. Якщо брандмауер відключений, можете пропустити цей розділ.

брандмауер UFW

sudo ufw status

Якщо список правил виглядає так, то брандмауер пропускає тільки трафік HTTP:

Status: active
To Action From
-- ------ ----
SSH ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)

Щоб розблокувати трафік HTTPS, включіть підтримку профілю WWW Full.

sudo ufw allow 'WWW Full'

Тепер список правил виглядає так:

sudo ufw status
Status: active
To Action From
-- ------ ----
SSH ALLOW Anywhere
WWW Full ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)
WWW Full (v6) ALLOW Anywhere (v6)

Тепер брандмауер підтримує трафік HTTPS.

брандмауер iptables

sudo iptables -S

На екрані з'явиться список правил. наприклад:

-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Які правила потрібно додати, щоб налаштувати підтримку SSL, залежить від поточних правил брандмауера. Якщо ви використовуєте базовий набір правил, використовуйте таке правило:

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

sudo iptables -S
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Якщо правила iptables завантажуються автоматично разом з сервером, додайте в цю настройку і нове правило.

4: Створення SSL-сертифіката

Згенеруйте SSL-сертифікат для Apache за допомогою завантаженого клієнта Let's Encrypt. Це досить просто. Клієнт автоматично отримає і встановить сертифікат SSL, валідний для доменів, зазначених у файлі конфігурації Apache

Щоб запустити інтерактивну установку і отримати сертифікат для всіх цих доменів, запустіть наступну команду:

sudo certbot --apache

Утиліта certbot прочитає настройки Apache, знайде всі необхідні домени та створить сертифікат для них. Пізніше ви зможете видалити деякі домени зі списку, і сертифікат не поширюватиметься на них.

Після завершення установки сертифікат буде поміщений в / etc / letsencrypt / live. Перевірте стан SSL-сертифіката за допомогою наступної посилання:

Примітка. Замініть example.com своїм доменом.

Перевірка може зайняти кілька хвилин. Ви отримаєте доступ до сайту по https.

5: Автоматичне оновлення

Сертифікати Let's Encrypt дійсні протягом 90 днів, але оновлення рекомендується виконувати заздалегідь (наприклад, через 60 днів використання сертифіката). Клієнт Let's Encrypt надає команду renew, яка перевіряє поточний сертифікат і оновлює його, якщо до дати його закінчення залишається менше 30 днів.

Щоб налаштувати оновлення для всіх існуючих доменів, запустіть:

sudo certbot renew

Оскільки сертифікат був отриманий тільки що, команда не стане оновлювати його. Вона просто повідомить, що даний сертифікат поки не дуже потребує оновлення.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/example.com.conf
-------------------------------------------------------------------------------
Cert not yet due for renewal
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Зверніть увагу: якщо ви створили один сертифікат для декількох доменів, у висновку команди буде вказано тільки базовий домен, однак оновлення буде дійсно для всіх доменів і піддоменів.

Щоб забезпечити своєчасне оновлення сертифіката, налаштуйте демон cron для автоматичного запуску команди renew раз в тиждень або щодня.

Відредагуйте crontab і створіть новий запис для команди renew. Щоб відредагувати crontab користувача root, введіть:

no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. / bin / nano <---- самый простой
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
Choose 1-3 [1]:

Додайте в кінець таблиці наступний запис:


30 2 * * 1 / usr / bin / certbot renew >> /var/log/le-renew.log

Збережіть і закрийте файл. Це створить новий процес cron, який буде виконувати команду letsencrypt-auto renew щопонеділка о 2.3о ночі. Висновок цієї команди буде поміщений в /var/log/le-renewal.log.

Тепер веб-сервер Apache захищений за допомогою SSL-сертифіката Let's Encrypt. Більше корисної інформації (в тому числі поновлення) можна знайти в блозі Let's Encrypt.

Схожі статті