https на локальном компьютере
При разработке AMP версии (см https://www.ampproject.org) одного проекта, столкнулся с тем, что формы требуют наличие https для домена. Разработку веду на локальном веб-сервере, поэтому https-а там не было. В этой статье расскажу как настроить..
В этот раз я использовал локальный веб-сервер "Apache 2", поэтому далее речь пойдет именно про его настройку.
Прежде всего, создаем папку для сертификатов и переходим в неё:
1 2 3 4 |
sudo mkdir -p /etc/ssl/apache2 cd /etc/ssl/apache2 |
Теперь генерируем сертификат для localhost:
1 2 3 4 5 |
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout localhost.key \ -out localhost.crt |
Отвечаем на простые вопросы, вводимая информация особо не важна, т.е. можно ввести что угодно
1 2 3 4 5 6 7 8 9 |
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:localhost Email Address []:no-reply@localhost |
На выходе, получаем два файлика: localhost.key и localhost.crt
Теперь, добавляем модуль mod_ssl в апач:
1 2 3 |
sudo a2enmod ssl |
Далее открываем файл конфигурации виртуального хоста и добавляем инструкции по подключению SSL.
Например, если для обычного http у вас была вот такая запись конфигурации
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<VirtualHost *:80> ServerName mysite.loc ServerAlias www.mysite.loc ServerAdmin webmaster@mysite.loc DocumentRoot /work/progr/webamp/sites/mysite.loc/public_html/web <Directory "/work/progr/webamp/sites/mysite.loc/public_html/web"> AllowOverride All Options FollowSymLinks Require all granted RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php DirectoryIndex index.php index.html </Directory> <IfModule mpm_itk_module> AssignUserId vitto vitto </IfModule> php_admin_value open_basedir "/work/progr/webamp/sites/mysite.loc/public_html:/work/progr/webamp/sites/mysite.loc/tmp:/tmp" php_value upload_tmp_dir "/work/progr/webamp/sites/mysite.loc/tmp" php_value session.save_path "/work/progr/webamp/sites/mysite.loc/tmp" php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors off php_value error_reporting -1 ErrorLog /work/progr/webamp/sites/mysite.loc/logs/error.log CustomLog /work/progr/webamp/sites/mysite.loc/logs/access.log combined </VirtualHost> |
то добавляем еще одну конфигурацию, вот такую
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<VirtualHost *:443> ServerName mysite.loc ServerAlias www.mysite.loc ServerAdmin webmaster@mysite.loc DocumentRoot /work/progr/webamp/sites/mysite.loc/public_html/web SSLEngine on SSLCertificateFile /etc/ssl/apache2/localhost.crt SSLCertificateKeyFile /etc/ssl/apache2/localhost.key <Directory "/work/progr/webamp/sites/mysite.loc/public_html/web"> AllowOverride All Options FollowSymLinks Require all granted RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php DirectoryIndex index.php index.html </Directory> <IfModule mpm_itk_module> AssignUserId vitto vitto </IfModule> php_admin_value open_basedir "/work/progr/webamp/sites/mysite.loc/public_html:/work/progr/webamp/sites/mysite.loc/tmp:/tmp" php_value upload_tmp_dir "/work/progr/webamp/sites/mysite.loc/tmp" php_value session.save_path "/work/progr/webamp/sites/mysite.loc/tmp" php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors off php_value error_reporting -1 ErrorLog /work/progr/webamp/sites/mysite.loc/logs/error.log CustomLog /work/progr/webamp/sites/mysite.loc/logs/access.log combined </VirtualHost> |
В ней мы поменяли порт с 80 на 443 в теге VirtualHost и добавили подключение SSL сертификатов, вот этими командами:
1 2 3 4 5 6 7 |
... SSLEngine on SSLCertificateFile /etc/ssl/apache2/localhost.crt SSLCertificateKeyFile /etc/ssl/apache2/localhost.key ... |
Теперь перезапускаем apache:
1 2 3 |
sudo systemctl restart apache2 |
И можно переходить на https версию сайта.
Т.к. это самоподписанный сертификат, то мы получим предупреждение от браузера типа такого:
Нажимаем кнопку [Advanced] и в открывшейся панельке [Add Exception..]
В появившемся окне, нажимаем [Get certificate] и затем [Confirm Security Exception]
После этих манипуляций, сайт заработает через https протокол.
--[добавлено 30.08.2018]--
Так же можно добавить автоматический редирект всех запросов с http на https. Для этого в файл .htaccess в корне сайта, добавляем (желательно сразу после RewriteEngine on)
1 2 3 4 5 6 7 8 |
RewriteEngine on ... # Если не https, редиректим на https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ... |
Теперь если зайти по адресу http://domain.tld/param, вас автоматически перенаправит на https://domain.tld/param
Author: | Tags: /
| Rating:
5 comments.
Write a comment