Масовий перехід сайтів на роботу по зашифрованому протоколу день за днем набирає обертів. І якщо раніше робота з сертифікатами представляла собою досить рутинну задачу, то сьогодні можна запросто і безкоштовно отримати сертифікат з базової перевіркою приналежності власнику.
І в цьому нам допоможе класний сервіс Let's Encrypt . Цей центр сертифікації почав працювати в бета-режимі з 3 грудня 2015 року. І за цей час число його користувачів зростає.
Let's Encrypt видає сертифікати з терміном дії, рівним 90 дням. При цьому, оновлення сертифікатів повністю автоматизовано. На даний момент в Debian зі сховищ backports можна встановити пакет certbot, який забезпечує легке отримання сертифікатів і їх автоматичне оновлення, що виконується два рази на добу по крону.
В першу чергу підключаємо репозиторій backports . зі свіжою версією nginx, зібраної з підтримкою ALPN.
А слідом встановити certbot:
aptitude install -t jessie-backports certbot
Зміст статті:
- Получаем сертификат для Nginx 1 Отримуємо сертифікат для Nginx
- А что насчёт Apache? 2 А що щодо Apache?
- Автоматическое обновление сертификатов по крону 3 Автоматичне оновлення сертифікатів по крону
Отримуємо сертифікат для Nginx
Щоб отримати сертифікат для цього веб-сервера, буде використовуватися плагін «webroot» , який підходить для використання з будь-яким сервером. Навіть якщо це lighttpd.
Команда для отримання сертифіката виглядає так:
certbot certonly --webroot -w /var/www/example.com -d example.com -d www.example.com
Тут після ключа -w вказуємо повний шлях до каталогу з сайтом на сервері. Після ключа -d ім'я домену, для якого потрібно отримати сертифікат. Одночасно можна отримати сертифікати на п'ять доменів. Не забудьте вказати домен з www і без. ;)
Папка з сайтом повинна існувати і бути доступною з інтернету, щоб certbot міг підтвердити приналежність сайту і його коректну роботу.
Отримані сертифікати слід шукати в каталозі /etc/letsencrypt/live/yourdomain.com/. Як сертифіката в конфіги сервера потрібно прописати файл fullchain.pem, а в якості ключа - privkey.pem. приклад:
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
А що щодо Apache?
Для нього теж можна отримати сертифікат. Годиться як вище описаний метод, так і спеціально задуманий плагін для apache. Тільки в цьому випадку доведеться встановити інший пакет.
aptitude install -t jessie-backports python-certbot-apache
А сам сертифікат встановлюється більш простою командою:
certbot --apache
Або, якщо ви хочете вручну налаштувати apache:
certbot --apache certonly
Природно, сайт і в цьому випадку повинен бути вже налаштований. На жаль, свій досвід використання certbot для apache я не зможу описати, так як давно не користуюся цим веб-сервером. Тому, рекомендую прочитати офіційну документацію англійською.
Аналогічно nginx, шлях до сертифікатів і ключу слід прописати в файлі конфігурації віртуального хоста.
SSLCertificateFile "/etc/letsencrypt/live/yourdomain.com/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
Автоматичне оновлення сертифікатів по крону
Як уже згадувалося раніше, при установці створюється завдання на оновлення в каталозі /etc/cron.d/certbot, що виконується двічі на добу. Вміст завдання таке:
0 * / 12 * * * root test -x / usr / bin / certbot && perl -e 'sleep int (rand (3600))' && certbot -q renew
При цьому, вся робота certbot записується і його логи ви можете знайти в каталозі / var / log / letsencrypt /. Це може допомогти, якщо у вас виникнуть проблеми. Однак, зі свого досвіду можу зауважити, що такі не виникали, поки що. :)
Як видалити сертифікат? :)
Проблема в тому, що редирект на https, а потрібно щоб сайт був доступний і по http