Настроювання SSL доступу для сервера Apache

Опишемо як отримати та прив'язати самопідписаний сертифікат безпеки для веб-сервера Apache. Це дозволить нам використовувати можливості протоколу SSL.

Для початку встановимо OpenSSL та інше потрібне ПЗ:

sudo install openssl ssl-cert apache2-utils

Крок 1: генеруємо файли сертифікатів.

У цьому прикладі і нижче текст вибрано директорія /etc/apache2/ssl/ для зберігання файлів сертифіката, публічного і приватного ключів. Можна вибрати будь-яку іншу директорію, наприклад /etc/ssl/localcerts/.

sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

Діалог введення інформації по SSL сертифікату буде приблизно таким:

Country Name (2 літери коду) [US]: UK State or Province Name (фол. (eg, company; recommended) []: Foo Bar Solutions Organisation Unit Name (eg, section) []: Generic Services server name (eg. ssl.domain.tld; required. ) []: srv .example.com Email Address []: [email protected]

Встановлюємо на файли сертифікатів безпечні права:

sudo chmod 600 /etc/apache2/ssl/apache*

Крок 2: Включимо підтримку SSL для Apache.

Увімкнемо модуль SSL для сервера Apache, можна створити символічне посилання на mods-enabled, а можна так:

sudo a2enmod ssl

Переконайтеся, що у файлі /etc/apache2/ports.conf є такі рядки:

Це потрібно для активації порту безпечного з'єднання.

Крок 3: Конфігурація віртуальних хостів.

Тепер потрібно налаштувати потрібний VirtualHost, для цього слід додати до конфігурації наступні рядки, нижче буде описаний приклад:

SSLEngine on SSLCertificateFile/etc/apache2/ssl/apache.pem

Ось приклад мінімальної конфігурації, наприклад, у файлі /etc/apache2/apache2.conf або в потрібному файлі з директорії /etc/apache2/sites-available/:

NameVirtualHost *:443 NameVirtualHost *:80

ServerNamesrv.example.com

DocumentRoot /var/www/ ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined

ServerNamesrv.example.com

DocumentRoot /var/www/ ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined

SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem

Звичайно, самопідписані сертифікати SSL будуть попереджати про свою небезпеку, але виняток додається один раз.