Установить самоподписанный сертификат для отдельных виртуальных хостов

Я создал самозаверяющий сертификат для своего локального сервера разработки, следуя этому руководству 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,

Другие вопросы по тегам