Прикручуємо SSL-сертифікат до веб-сервера Apache


Хочемо ми того чи ні, але перехід на https неминучий. Активно стимулює власників до переходу на безпечну версію http Google: як мінімум, в адресному рядку Chrome (та вже й інших браузерів) буде відмітка про те, що з'єднання не захищене, як максимум, пошукові результати з сайту не будуть з'являтися в так званих rich snippets, що досить погано для Інтернет-магазинів.

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

Замовлення сертифіката

Насамперед потрібно замовити сертифікат. Зробити це можна або в панелі керування віртуальним сервером або купити його в будь-якому іншому місці. За запитом "SSL сертифікат купити" отримайте багато різних варіантів.

Налаштування веб-сервера

В результаті замовлення сертифіката вам будуть надані два файли – SSL-файл сертифіката (розширення pem) та ключовий файл (розширення key). Обидва ці файли слід помістити в каталог /etc/ssl.

Перейдіть до каталогу /etc/apache2/sites-available. У ньому зберігаються файли конфігурації сайтів, що працюють на вашому веб-сервері.

Відкрийте файл, який містить конфігурацію сайту, для якого ви купили сертифікат. Далі уявімо, що наш сайт називається example.com. Конфігурація для нього буде наступною:


ServerName example.com
Redirect permanent / https://example.com/



ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com xxx.xxx.xxx.xxx
DocumentRoot /srv/www/example.com/htdocs
ErrorLog /srv/www/example.com/logs/error_log
CustomLog /srv/www/example.com/logs/access_log combined env=!loopback

SSLEngine on
SSLCertificate /etc/ssl/firma.pem
SSLCertificateKeyFile /etc/ssl/server.key

Розберемося, що й до чого. Спочатку ми створюємо віртуальний хост для порту 80, який працюватиме як перенаправлення – на https-версію сайту. Можна було б зробити це і через .htaccess, але оскільки ми маємо доступ до конфігу сервера, то можна зробити це прямо тут.

Далі ми описуємо віртуальний хост для порту 443 (використовується SSL). Налаштування такі самі, як і для звичайної версії сайту (ServerName, DocumentRoot і т.д.). Відмінність полягає лише у наявності трьох SSL-директив. Перша включає SSL, друга задає PEM-файл, третя – KEY-файл.

Після цього потрібно зберегти файл конфігурації та перезапустити Apache:

sudo systemctl restart apache2.service

або (залежно від вашого дистрибутива)

sudo service apache2 restart

Зверніться до вашого сайту. Якщо замість напису На захищено з'явилося зображення зеленого замку, то все добре і налаштування можна вважати завершеним.

Іноді замок відображається не зеленим, а сірим і не закритим, а відкритим. Це означає, що не всі сайти завантажуються за протоколом https. Відкрийте вихідний код сторінки і зробіть пошук за рядком "https://" (без лапок). Ваше завдання – знайти адреси ресурсів (JS, CSS, картинок), які завантажуються за протоколом http. Виправте URL-адресу проблемних ресурсів на https:// і знову оновіть сторінку сайту. Якщо ви все зробите правильно, побачите зелений замок з'єднання.