Настройка 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 []:webmaster@example.com

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@example.net

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@example.net
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/