Установка SSL сертификата на Apache

После того, как был получен CSR-запрос (сгенерировать его вы можете тут - https://oblako.kz/products/ssl-certificate/csr-generator-online) и создан сертификат SSL, нужно войти в панель управления и произвести установку полученных файлов с расширением .CRT и .CA.

Наша статья создана для того, чтобы пошагово помочь в установке нового сертификата SSL на свободный веб-сервер, работающий на основе таких операционных систем Linux как Ubuntu, CentOS или Debian.


Установочные файлы будут отображены в меню SSL сразу после покупки нового сертификата.
.CA – используется для инсталляции, содержит цепочки сертификатов Центра Сертификации.
.CRT – файл подписанного сертификата.

Размещение документов на сервере

Первый шаг – выгрузка файлов на рабочий сервер. Когда среда рабочего стола на сервере отсутствует, то есть иные способы переноса файлов. Для начала их необходимо перенести на другое устройство, после чего инсталлировать на нужный веб-сервер.

Важно! Для проведения работы требуется пара ключей (закрытый и открытый). Они создаются на том же сервере, где будет располагаться новый сертификат SSL. Если пара была создана в другом месте, то исходный файл ключа необходимо переместить на нужный сервер аналогично процедуре, описанной в этой статье.

Загрузка с устройств Linux или Mac OS 

Если вы пользуетесь этими операционными системами, то самым легким возможным способом переноса станет возможность воспользоваться утилитой копирования файлов, которая встроена в текстовую консоль устройства. Для этого необходимо:

  • Загрузить готовые файлы на устройство;
  • Войдите в терминал, зайдите в папку загрузки или сохранения файлов;
    cd ~/Downloads
  • Переместите файлы следующим образом:
  • scp crt.crt ca.crt user@1.22.33.444:/etc/ssl

    В строке последовательно отражена информация:
    - команда начала копирования;
    - имя файла с расширением .crt
    - имя файла с расширением .ca;
    - имя пользователя, чтобы подключиться к программному продукту через сетевой протокол Secure Shell или учетную запись администратора;
    - IP-адрес;
    - адрес на сервере, где будут расположены сохраненные документы.

    Загрузка с устройства на ОС Windows


cp /home/root/private.key /etc/ssl/private.key


Последовательно вводятся такие данные: 
- команда запуска копирования; 
- указание пути к папке, где лежит закрытый ключ .key; 
- имя файла; 
- путь копирования закрытого ключа. 

Чтобы удалить закрытый ключ из предыдущей директории, воспользуйтесь нижеприведенной командой: 

rm /home/root/private.key

Настройка программного продукта под работу сертификата

После того, как все необходимые файлы были перенесены, нужно внести изменения в настройки веб-сервера. Для этого подключитесь к нему с помощью Secure Shell, выполнив вход с правами администратора и совершите последовательно такие действия:

  • Включите работу SSL-опции;

На Ubuntu/Debian:
a2enmod ssl
Для CentOS: 

yum install mod_ssl

Войдите в файл настроек того сайта, куда устанавливается SSL. Пример пути
nano /etc/apache2/sites-enabled/000-default.conf

Важно! Если вы используете Ubuntu или Debian, конфигурационные документы расположены по адресу/etc/apache2/sites-enabled/.


Для CentOS используется адрес директории /etc/httpd/conf.d/.
Чтобы найти необходимый файл, воспользуйтесь командой ls, с помощью которой можно увидеть весь список документов, хранящийся по определенному пути.
Воспользовавшись вводом команды nano, вы получите доступ к определенным нужным вам документам. Чтобы убедиться в том, что найденный файл содержит настройки сайта, найдите в тексте значение ServerName. Указанные данные должны соответствовать имени домена вашего сайта. Для пользователей CentOS, у которых отсутствует предустановленный редактор, есть возможность воспользоваться командой установки yum install nano.


В открытый файл настроек необходимо внести следующие данные:
SSLEngine on
SSLCertificateFile /etc/ssl/mydomain.ru_crt.crt
SSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crt
SSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key

В приведенных данных первая строка указывает на путь к файлу сертификата сайта;
Вторая строка – данные, указывающие путь к файлу с расширением .CA;
Последняя строчка – это данные о директории, где расположен файл .key.
Важно! Если у вас есть необходимость разрешения доступа только по безопасному протоколу (через порт 443), то необходимо внести изменения ф файл настроек протокола согласно описанному ниже примеру No1.

Если этот вопрос не играет значения и вы хотите оставить открытым доступ через порт 80, то следуйте инструкциям, указанным в образце No2. Все измененные данные выделены жирным.

Образец 1

<VirtualHost *:443>         # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.mydomain.ru
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
        SSLEngine on
        SSLCertificateFile /etc/ssl/mydomain.ru_crt.crt
        SSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crt
        SSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key

</VirtualHost>

Образец 2 

<VirtualHost *:443>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.mydomain.ru
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
        SSLEngine on
        SSLCertificateFile /etc/ssl/mydomain.ru_crt.crt
        SSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crt
        SSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key

</VirtualHost>
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.mydomain.ru
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Командой перезапустите веб-сервер:

Для Ubuntu/Debian:
/etc/init.d/apache2 restart
Для CentOS:
apachectl restart

Если в программном продукте установлен и настроен firewall iptables, то нужно позаботиться о вопросе входящих подключений по защищенному протоколу. Для этого нужно разрешить их в настройках фаерволла. Чтобы внести изменения, необходимо изучить техническую документацию операционной системы, так как в разных продуктах компании применяются разные способы. Мы привели несколько общих примеров, которые вы можете изучить.
Ubuntu 16.04:
ufw allow 443/tcp
Debian:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
CentOS:
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Контроль установки

Если вы совершали все действия согласно инструкции, то окончательным результатом должна стать успешная установка сертификата в программный продукт, как и было заявлено в этой статье.


Чтобы удостовериться в том, что все прошло успешно и настроено правильно, необходимо запустить веб-сервер через протокол HTTPS в любом браузере. При правильной установке утилиты в верхней части окна можно будет заметить появившийся значок замка. При нажатии на иконку будут открываться данные о сертификате, установленном на сайт.

Последнее обновление: 11.04.2018 97