Установить самоподписанный сертификат для отдельных виртуальных хостов
Я создал самозаверяющий сертификат для своего локального сервера разработки, следуя этому руководству https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04
Когда мне задают вопрос, я задаю IP-адрес сервера в качестве значения "Общее имя". Я не установил брандмауэр.
После внесения всех других изменений, предложенных в руководстве, я могу связаться с https://192.168.1.202/
ЗДЕСЬ ПРОБЛЕМА
У меня есть несколько виртуальных хостов, которые я хочу защитить, поэтому я пытался использовать один и тот же сертификат для доступа к своим сайтам в https, но я всегда перенаправлен на корневую страницу apache.
Это мой конфигурационный файл
/etc/apache2/sites-enabled/kopakabana.conf
<VirtualHost *:80>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key`
....
</VirtualHost>
Где я не прав?
1 ответ
Вы, кажется, слушаете порт 80 вместо порта 443 в конфигурации вашего виртуального хоста.
Верхняя строка должна быть:
<VirtualHost *:443>
Там может быть и другая проблема. Вы упоминаете следующее:
У меня есть несколько виртуальных хостов, которые я хочу защитить, поэтому я попытался использовать тот же сертификат для доступа к своим сайтам в https [...]
Тем не менее, вы также упоминаете, что вы получаете доступ к своим сайтам с IP-адресом сервера.
Этот подход не будет работать, вы не можете иметь несколько виртуальных хостов, слушающих на одном хосте, будет работать только один.
Например, предположим, у вас есть следующие два виртуальных хоста:
example.conf
kopakabana.conf
Когда вы получаете доступ к вашему серверу через Apache, ему необходимо выяснить, какой сайт ему нужно обслуживать. Это не может служить обоим.
Поскольку вы получаете доступ к своему сайту через IP-адрес, Apache будет обслуживать первый соответствующий виртуальный хост. В вашем случае это может быть разрешением в файл конфигурации по умолчанию.
Что вам нужно сделать, так это назначить имя сервера вашим виртуальным хостам. И если вы хотите запустить их с тем же сертификатом, вы можете создать их как субдомены и назначить им подстановочный сертификат.
Например, рассмотрим следующие виртуальные хосты:
example.conf
<VirtualHost *:443> ServerName example.mymachine.local # [...] </VirtualHost>
kopakabana.conf
<VirtualHost *:443> ServerName kopakabana.mymachine.local # [...] </VirtualHost>
В этом случае вы должны создать сертификат для *.mymachine.local
и используйте это на них обоих.
Далее просто отредактируйте /etc/hosts
файл на вашем собственном компьютере и добавьте к нему следующее, чтобы ваш браузер мог правильно определить домен.
192.168.1.202 example.mymachine.local
192.168.1.202 kopakabana.mymachine.local
Наконец, вместо доступа https://192.168.1.202
, вы бы получили доступ https://kopakabana.mymachine.local
или же https://example.mymachine.local
,