Створення SSL-сертифіката на Apache у Debian 8
Пропозиція від 8host.com

Цей посібник продемонструє створення SSL-сертифіката в Debian 8 та налаштування веб-сервера Apache для підтримки цього сертифіката. В результаті сервер підтримуватиме з'єднання HTTPS.
SSL ґрунтується на алгоритмі асиметричного шифрування, що передбачає наявність пари ключів – відкритого та закритого. Існують центри сертифікації (ЦС), які можуть підтвердити справжність такого сертифіката SSL, що гарантує безпеку з'єднання. Однак можна створити підписаний сертифікат, що не вимагає стороннього підтвердження.
У цьому посібнику показано, як створити самопідписаний сертифікат, налаштувати сервер для його підтримки та протестувати налаштування. Загалом, самопідписані сертифікати відмінно підходять для пробного налаштування, але при постійній роботі вони будуть видавати відвідувачам сайту помилки, тому їх не рекомендується використовувати на стадії виробництва.
Вимоги
Для виконання інструкцій знадобиться:
- Свіжий сервер Debian 8;
- Не-рутовий користувач з правами sudo (подробиці можна знайти тут);
- Попередньо встановлений пакет OpenSSL; як правило, цей пакет встановлений за замовчуванням, тому його потрібно просто оновити:
sudo apt-get update sudo apt-get upgrade openssl
Для тестування може знадобитися другий комп'ютер:
- OpenSSL;
- Ще один сервер Linux або Unix-подібна локальна система (Mac, Ubuntu, Debian тощо).
1: Встановлення Apache
Встановити Apache можна за допомогою вбудованого менеджера пакетів apt-get, який робить керування пакетами і процес встановлення значно простішим.
На відміну від іншихдистрибутивів Linux, Debian 8 поставляється без попередньої утиліти sudo. У цьому посібнику можна знайти інструкції з оновлення apt-get та інсталяції пакету sudo.
Щоб встановити Apache, запустіть:
sudo apt-get install apache2
2: Увімкнення модуля SSL
Тепер потрібно настроїти веб-сервер для підтримки SSL.
Для цього потрібно увімкнути модуль Apache:
sudo a2enmod ssl
Стандартний сайт Apache поставляється зі зручним шаблоном для включення SSL, тому показано, як включити стандартний сайт.
sudo a2ensite default-ssl
Перезапустіть Apache, щоб оновити налаштування:
sudo service apache2 reload
3: Створення самопідписаного SSL-сертифіката
Спочатку потрібно створити окремий каталог для зберігання закритого ключа та сертифіката.
sudo mkdir /etc/apache2/ssl
Потім потрібно запросити новий сертифікат та підписати його.
Згенеруйте сертифікат і закритий ключ за допомогою наведеної нижче команди.
- Прапор days задає термін дії сертифіката (у разі сертифікат буде дійсний протягом 365 днів);
- Прапор keyout вказує шлях до ключа;
- Прапор out задає шлях до сертифікату.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Наприклад, відповіді можуть мати такий вигляд:
Interactive Те, що ви збираєтеся вводити інформацію про те, що буде введено у свій довідник. Що ви думаєте про те, що називається Розміщений Name або DN. Те, що існують кілька філій, але ви можете скористатися деяким бланк За деякими ланками буде вказати значення, Як ти вийде '.blank. ——- Country Name (2 letter code) [AU]: US State або Province Name (full name) [Some-State]: New York Locality Name (eg, city) []: NYC Organization Name (eg, company) [Internet W MyCompany Organization Unit Name (eg, section) []: SSL Certificate Test Common Name (e.g. server FQDN or YOUR name) []: example.com Email Address []: [email protected]
Змініть права на файл, щоб обмежити доступ до закритого ключа та сертифіката:
sudo chmod 600 /etc/apache2/ssl/*
Примітка : Докладнішу інформацію про права можна знайти в посібнику «Основи привілеїв Linux».
Отже, тепер сертифікат та закритий ключ готові до використання.
4: Налаштування Apache для підтримки SSL
Тепер потрібно налаштувати стандартний віртуальний хост Apache, який використовуватиме SSL-сертифікат і ключ. Це дозволить серверу обробляти запити HTTPS замість HTTP (для стандартного сайту).
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Знайдіть розділ, який починається з рядка і внесіть до нього наступні зміни:
- Додайте рядок Server Name під рядком ServerAdmin, у якому вкажіть домен або IP сервера:
ServerAdmin webmaster@localhost ServerName example.com :443
- Знайдіть наступні два рядки та вкажіть у них правильні шляхи до сертифіката та ключа:
SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
В результаті конфігураційний файл повинен мати такий вигляд:
ServerAdmin webmaster@localhost ServerName example.com :443 DocumentRoot /var/www/html . . . SSLEngine on . . . SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Збережіть та закрийте файл.
Щоб оновити настойки веб-сервера, перезапустіть Apache.
sudo service apache2 reload
Примітка : Докладнішу інформацію про віртуальні хости можна знайти в цьому посібнику.
5: Тестування налаштування
На завершення слід протестувати SSL-з'єднання.
Перевірку можна виконати за допомогою:
- Локальної Unix-подібної системи
- Іншого сервера
- Цього ж сервера
Рекомендується перевірити налаштування за допомогою зовнішньої системи, оскільки це підтверджує те, що сайт знаходиться у відкритому доступі.
Відкрийте з'єднання HTTPS на порті 443.
openssl s_client -connect your_server_ip :443
У середині виводу (після ключа) знайдіть такі рядки:
--- SSL handshake has read 3999 bytes and written 444 bytes —- . . . SSL-Session: . . .
Звичайно, числа можуть відрізнятися, але цей рядок говорить про те, що сертифікат SSL успішно встановлений.
Щоб вийти, натисніть клавішу CTRL+C.
Також можна відвідати сайт у браузері, використовуючи посилання HTTPS (наприклад, https://example.com). Браузер виведе попередження про те, що сертифікат не можна довіряти (це нормальна реакція, оскільки він не був засвідчений надійним центром сертифікації). Перегляньте сертифікат і переконайтеся, що всі дані відповідають інформації, зазначеній у розділі 3.
Тепер сервер Apache захищений за допомогою сертифіката SSL.