Безкоштовні ssl сертифікати від let - s encrypt

У минулому році Google явно дав усім зрозуміти. що пора б уже підключати SSL сертифікати до своїх сайтів. Тепер же за замовчуванням перевага надаватиметься сайтам, які використовують захищене з'єднання. У зв'язку з цим з недавніх пір з'явилася галас навколо безкоштовних SSL сертифікатів (давно вже пора). За підтримки Linux Foundation, а також Mozilla, Facebook, Akamai, Cisco і багатьох інших іменитих гігантів IT індустрії, світ побачив проект під назвою Let's Encrypt.

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

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

Безкоштовні ssl сертифікати від let - s encrypt

Варто відзначити, що зараз проект знаходиться на стадії бета-тестування, тому можуть виникати помилки в роботі їх скриптів.

Весь процес роботи з сервісом відбувається за допомогою python скрипта letsencrypt. на поточний момент не для всіх дистрибутивів linux існують пакети letsencrypt, тому офіційна документація рекомендує ставити його попередньо склоніровав git репозиторій з github.

letsencrypt-auto це скрипт-обгортка навколо letsencrypt. автоматизує процес розгортання. Простіше кажучи, скрипт викачує всі необхідні залежності, піднімає окреме віртуальне оточення для Python, використовуючи virtualenv, встановлюючи в нього необхідні python-модулі при цьому не засмічуючи системний пітон. Варто зазначити, що для коректної роботи скрипта необхідні права на запис в системні директорії (sudo).

Так як скрипт покликаний максимально спростити роботу по установці сертифікатів безпеки, він підтримує систему плагінів. Наприклад, в стандартному постачанні є плагін для роботи з Apache (повноцінно функціонуючий) і nginx (поки тільки на експериментальній стадії).

Установка SSL сертифікату для Apache

Мій блог працює на зв'язці LAMP, тобто Linux, Apache, MySQL та PHP. Розробники Let's Encrypt постаралися на славу і спростили налаштування сертифіката для Apache до рівня "простіше нікуди". Весь процес зводиться до таких кроків:

  • Перевірить приналежність домена
  • Випустить необхідний сертифікат терміном на 90 днів
  • Внесе всі необхідні настройки для веб-сервера Apache

Після всіх цих маніпуляцій мені тільки залишалося налаштувати 301 редирект (Moved Permanently) з http на https і перезавантажити веб-сервер.

Налаштування SSL сертифікатів для інших веб-серверів

У постачання letsencrypt крім плагіна для роботи з Apache є ряд інших, а саме:

Standalone

Суть standalone полягає в тому, що скрипт спробує підняти власний веб-сервер на час процедури отримання сертифікату (щоб підтвердити приналежність домена), а для цього необхідно буде відключити вже працюючий, щоб звільнити порти 80 і 443. Для більшості веб-розробників даний варіант незручний через необхідність відключення сайту.

Дана опція підходить тим, кого не влаштовує standalone. При вказівці ключа --webroot необхідно також буде вказати і директорію, де розташовуються файли, які обробляє веб-сервер.

При роботі з даною опцією необхідно налаштувати веб-сервер на читання файлів відповідним чином.

З назви можна здогадатися, що настройка і установка SSL сертифікату буде проводитися вручну :-) Мабуть, зараз це найбільш зручний варіант настройки сертифіката для nginx з огляду на "сируватий" letsencrypt nginx плагіна.

Після введення цієї команди вам необхідно буде самостійно провести маніпуляції з підтвердження домену, розмістивши файл з певним вмістом в потрібній директорії на сайті. Коли процедура створення сертифіката закінчиться, всі необхідні файли будуть лежати по наступним шляхом / etc / letsencrypt / live / $ domain. У підкаталозі live знаходяться всі найактуальніші сертифікати і ключі, тоді як keys і archive містять всі раніше створені файли.

Налаштування SSL в Nginx

Отже, якщо процедура зі створенням сертифікатів в manual режимі пройшла успішно, то у вищезгаданій директорії ми знайдемо всі необхідні файли для настройки безпечного з'єднання.

  • privkey.pem - наш приватний ключ
  • cert.pem - сертифікат сервера
  • chain.pem - кореневої (root) і проміжний (intermediate)
  • fullchain.pem - всі необхідні нам сертифікати для настройки веб-сервера.

Як же в даному випадку буде виглядати настройка Nginx?

Хлопці з letsencrypt не радять переміщати файли, тому що при продовженні сертифікату старі будуть автоматично замінені новими за тими ж шляхами, краще в цьому випадку створити символічно посилання.

Продовження SSL сертифікату

Раніше я вже згадував про те, що безкоштовні SSL сертифікати "живуть" тільки 90 днів, тому після їх закінчення необхідно буде запускати процедуру продовження, благо це теж безкоштовно :-)

Що ж собою являє процес продовження?

Як стверджують в Let's Encrypt, перед закінченням, на пошту, вказану при створенні, приходить відповідний лист-повідомлення про те, що пора б продовжити сертифікат. Щоб це зробити вручну досить запустити команду:

І слідувати інструкціям на екрані. Автоматичне ж продовження можна налаштувати використовуючи конфігураційний файл і звичайний crontab. Бажано налаштувати крон таким чином, щоб продовження відбувалося не частіше 1 разу на місяць.

Якщо ви працюєте з під Windows, то letsencrypt можна розгорнути, використовуючи Vagrant або Docker. Правда в цьому випадку для правильного налаштування веб-сервера необхідно буде вручну перемістити всі файли на сервер.

Безкоштовні ssl сертифікати від let - s encrypt

На каналі вже понад 1000 учасників, тому приєднуйтесь і Ви - DevBrain

Схожі статті