Настройка SSL доступа для сервера Apache

Опишем как получить и привязать самоподписанный сертификат безопасности для web-сервера 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 letter code) [US]: RU
State or Province Name (full name) [Some-State]: Central District
Locality Name (eg, city) []: Moscow
Organization Name (eg, company; recommended) []: Foo Bar Solutions
Organizational Unit Name (eg, section) []: Generic Services
server name (eg. ssl.domain.tld; required!!!) []: srv.example.com
Email Address []: admin@example.com

Устанавливаем на файлы сертификатов безопасные права:

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

Шаг 2: Включим поддержку SSL для Apache.

Включим модуль SSL для сервера Apache, можно создать символическую ссылку на mods-enabled, а можно так:

sudo a2enmod ssl

Убедимся, что в файле /etc/apache2/ports.conf есть подобные строки:

<IfModule mod_ssl.c>
Listen 443
</IfModule>

Это нужно для активации порта безопасного соединения.

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

Теперь нужно сконфигурировать нужный VirtualHost, для этого следует добавить в конфигурацию следующие строки, ниже будет описан пример:

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

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

NameVirtualHost *:443
NameVirtualHost *:80
 
<VirtualHost *:80>
ServerName srv.example.com
 
DocumentRoot /var/www/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
 
<VirtualHost *:443>
ServerName srv.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

</VirtualHost>

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

Инструкции по теме:

5 thoughts on “Настройка SSL доступа для сервера Apache

  1. nuty:

    Для генерации ключа можно использовать простую команду apache2-ssl-certificate

  2. андрей:

    srv.example.com откуда это взялось и где настраивалось? пытаюсь прикрутить ssl для ownCloud по мотивам этой статьи http://habrahabr.ru/post/154047/ или дайте ссыль где почитать про то как с этим разобраться

    • nuty:

      Это доменное имя, к которому сертификат прикручивается. В случае статьи, указанной выше, можно написать owncloud.loc, а DocumentRoot /var/www/owncloud

      В файле /etc/hosts надо прописать строку:
      127.0.0.1 owncloud.loc

      После перезагрузки сервера можно в браузере открывать адрес owncloud.loc

  3. андрей:

    127.0.0.1 localhost
    127.0.1.1 vasiliy

    # The following lines are desirable for IPv6 capable hosts
    ::1 ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

    дописать 127.0.0.1 owncloud.loc или заменить первую строку на эту
    заранее спасибо за ответ уже мозг кипит=)

  4. nuty:

    можно дописать, будет и так и так доступен

Добавить комментарий