Блог :. Быстренько подымаем https на своем сервере

Быстренько подымаем https на своем сервере

08 Фев, 2016

В этом посту я расскажу, как быстро настроить секьюрный доступ к вашему сайту по https с помощью самоподписанного сертификата. Минус такого подхода заключается в том, что пользователю придется постоянно добавлять в браузере в исключения ошибку "Ваше подключение не защищено". Но потом вы можете приобрести за деньги нормальный SSL-сертификат.

В общем, к делу. Создаем самоподписанный сертификат:

sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

После этого Вам будет задана порция вопросов, на которые надо бы ответить:


Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Saint-Petersburg
Locality Name (eg, city) []:Saint-Petersburg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Company
Organizational Unit Name (eg, section) []:RnD
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:email@example.com

Затем надо подредактировать виртуальный хост апача, отдельный для SSL

sudo vim /etc/apache2/sites-available/default-ssl.conf

Туда накидать что-то вроде

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com

        DocumentRoot /var/www/example.com/

        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>
        <Directory /var/www/example.com/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>

Ну и в конце концов добавить новый виртуальный хост, активировать модуль ssl и перезапустить апаче

sudo a2ensite default-ssl.conf
sudo a2enmod ssl
sudo service apache2 restart

Ну и все, набираем https://ваш_домен.ру, подтверждаем исключение безопасности в браузере и наслаждаемся секурным транспортом. Лично мне это понадобилось для взаимодействия апи мерчанта, который передает в callback "особо важные данные" об оплате только по https.

Доне.