Настройка Apache With Self-Signed TLS/SSL Certificate on Ubuntu 16.04 + Vagrant
Для меня была подходящей только эта инструкция по конфигурации Vagrant + SSL
Шаг 1: Генерация SSL-сертификата
1) Создаем необходимые места хранения сертификатов
mkdir ~/certificates
cd ~/certificates
2) Генерируем SSL
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Вам прилетит запрос на заполнение вот этих полей (- заполняем):
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: FL
Locality Name (eg, city) []: Miami
Organization Name (eg, company) [My Company]: My Company
Organizational Unit Name (eg, section) []:
«Common Name» должно быть вашим доменным именем или IP-адресом сервера. Кроме того, заполните свою электронную почту.
Common Name (e.g. server FQDN or YOUR name) []: 192.168.33.10
Email Address []:[email protected]
3) Теперь переместите сертификат в папку конфигурации Apache.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
Шаг 2. Настройка фаервола
1) Необходимо включить UFW
sudo ufw enable
2) Предоставить полные права Apache и OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw allow 'OpenSSH'
Шаг 3. Конфигурация виртуальных хостов
1) Откройте default-ssl.conf — каталог конфигурации SSL сайта Apache по умолчанию.
sudo nano /etc/apache2/sites-available/default-ssl.conf
2) Этот файл сообщает серверу, где искать сертификат SSL.
С удаленными комментариями это должно выглядеть следующим образом:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
3) Отредактируйте Email
ServerAdmin [email protected]
4) Добавьте это прямо под строкой ServerAdmin:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
5) Теперь отредактируйте эти строки и сообщите где находится SSL:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
6) Наш окончательный файл должен выглядеть примерно так:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName 192.168.33.10
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
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>
</VirtualHost>
</IfModule>
Шаг 4: Включение модуля Apache SSL
1) Включите модуль SSL:
sudo a2enmod ssl
Теперь включите сайт, который мы только что отредактировали:
sudo a2ensite default-ssl.conf
Перезагрузите Apache:
sudo service apache2 restart
Откройте свой сайт с HTPPS (убедитесь, что добавили https://).
https://YOUR_SERVER_IP
Ваш браузер предупредит вас о том, что сертификат недействителен, как мы и ожидали. Это происходит потому, что сертификат не подписан. Следуйте инструкциям вашего браузера, чтобы перейти на ваш сайт.
Шаг 5: Перенаправление запросов с HTTP на HTTPS (необязательно)
1) Откройте файл по умолчанию виртуального хоста Apache:
sudo nano /etc/apache2/sites-available/000-default.conf
2) Добавьте эту строку внутри тега
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
3) Перезагрузите Apache
sudo service apache2 reload
Готово! Теперь все запросы автоматом будут автоматически перенаправляться на HTTPS. Vagrant + SSL настроены. Удачи
Источник: _https://www.vultr.com/docs/configure-apache-with-select-signed-tls-ssl-certificate-on-ubuntu-16-04
_https://www.cyberciti.biz/faq/star-stop-restart-apache2-webserver/