Apache не может запустить два виртуальных хоста с SSL одновременно - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть файл httpd.conf со следующим содержимым.

<VirtualHost demo.mydomain.com:443>
        DocumentRoot "/var/www/html/demo"
        ServerName "demo"
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/demo.mydomain.com.crt
        SSLCertificateKeyFile /etc/ssl/certs/demo.mydomain.com.key
        SSLCACertificateFile /etc/ssl/certs/demo.mydomain.com.ca-bundle
</VirtualHost>
<VirtualHost pay.mydomain.com:443>
        DocumentRoot "/var/www/html/pay"
        ServerName "pay"
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/pay.mydomain.com.crt
        SSLCertificateKeyFile /etc/ssl/certs/pay.mydomain.com.key
        SSLCACertificateFile /etc/ssl/certs/pay.mydomain.com.ca-bundle
</VirtualHost>

Когда я проверяю домены с помощью проверки SSL, все выглядит нормально.Но браузер может запустить только первый.Второй, pay.mydomain.com выдает ошибку SSL, а браузер сообщает об ошибке NET::ERR_CERT_COMMON_NAME_INVALID.

Если я удаляю первый, pay.mydomain.com начинает работать.Я понятия не имею, что происходит и как я могу решить эту проблему в этом случае.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Заменить

<VirtualHost demo.mydomain.com:443>
        DocumentRoot "/var/www/html/demo"
        ServerName "demo"
...
<VirtualHost pay.mydomain.com:443>
        DocumentRoot "/var/www/html/pay"
        ServerName "pay"
...

на

<VirtualHost *:443>
        DocumentRoot "/var/www/html/demo"
        ServerName demo.mydomain.com
...
<VirtualHost *:443>
        DocumentRoot "/var/www/html/pay"
        ServerName pay.mydomain.com
...
0 голосов
/ 26 февраля 2019

Дважды проверьте имена в ваших сертификатах.Ваши VHosts настроены на ответы на имена pay и demo, без каких-либо дополнительных доменов.Правильный ЦС, по всей вероятности, вообще не будет выдавать сертификаты для этих имен.

То, что вы можете поместить имя в начальный <VirtualHost> вместо IP или *, немного вводит в заблуждение, это эквивалентнопоместив соответствующий IP-адрес туда, но он не отправляет запросы httpd-карты на это имя или на этот блок VirtualHost, и не поощряется .

Так что, я думаю, вы видите, что оплата идемо имеют тот же IP, вы заходите с полным доменным именем pay.mydomain.com, совпадения ServerName нет, поэтому по умолчанию (первое) VirtualHost выбрано.В этот момент соединение не устанавливается, поскольку сертификат подходит только для имени demo.mydomain.com.(Я думаю, httpd выдает предупреждение при запуске, если у вас есть сертификаты, которые не соответствуют ServerName, но это не фатальная ошибка.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...