Как использовать в одном и том же сертификатах Apache2 Server 2 различные сертификаты с использованием VirtualHost?
-
20-09-2019 - |
Вопрос
Я получаю сертификат от Gandi для домена www.mondomaine.fr, но для sql.mondomaine.fr я хотел использовать самопоглашенный сертификат SSL.
Если я активен sql.mondomaine.fr, www.mondomaine.fr использует самореагированный сертификат вместо Gandiś One.
Если я десактивирую SQL. Все работает нормально.
Как я могу управлять использованием различного сертификата?
Это швы, что первая конфигурация VirtualHost занимает для каждого SSL Virtualhost.
Спасибо за помощь.
Вот моя конфигурация:
Для PhpMyAdmin:
<VirtualHost *:443>
# Chemin vers les données web
DocumentRoot /usr/share/phpmyadmin
ServerName sql.mondomaine.fr
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/phpmyadmin.pem
</VirtualHost>
Для Mondomaine.fr
<VirtualHost *:443>
ServerName www.mondomaine.fr
DocumentRoot /var/www/mondomaine/
CustomLog /var/log/apache2/secure_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/mondomaine.fr.crt
SSLCertificateKeyFile /etc/ssl/mondomaine.fr.key
SSLCACertificateFile /etc/ssl/GandiStandardSSLCA.pem
SSLVerifyClient None
</VirtualHost>
Конфигурация верна, потому что, если первое чтение VirtualHost - phpmyAdmin.pem modssl, используйте это, и если это mondomaine.fr.crt, первое виртуально, Apache использует этот.
Решение
Вы сталкиваетесь с общей проблемой с HTTP через SSL - когда клиент подключается, он указывает, к какому ходу он хочет подключиться к использованию хоста: HTTP Header, но это только приходит после Руководство SSL (когда представлен сертификат) завершено. Недавние версии расширений TLS поддерживают (указанные в RFC 4366), которые позволяют клиенту указать, к какому ходу он намерен подключаться во время рукопожатия SSL, с конкретным намерением поддержки Vhosts; Цитировать RFC:
"" "TLS не предоставляет клиенту механизм, чтобы сообщить серверу имя сервера, с которым он обращается. Одиночный базовый сетевой адрес. "" "
Согласно Википедии, недавние версии Firefox, Opera, IE, Chrome и Safari поддерживают это расширение; Другие клиенты все равно не отправили бы продление, и вам там не повезло. Вы также должны использовать как минимум TLS 1.1, чтобы включить поддержку расширений.
Есть некоторые документация о том, как настроить это с помощью Apache; Возможно, вам придется восстановить OpenSSL и/или Apache с конкретными параметрами, в зависимости от вашей локальной настройки.
Другие советы
Он зависит от того, как вы создали свой сертификат. Если вы купили его только для поддомена www, не будет работать в SQL. Что вам нужно сделать, так это сделать это, чтобы разрешить любой субдомен, но AFAIK эти сертификаты дороже.
С другой стороны, вы можете использовать свой собственный Ceritificate, вам нужно только уверенно в том, что вы кладете, когда создаете свой виртуторий
<virtualhost XXX.XXX.XXX.XXX:443>
serverName www.mondomaine.fr
# Gandiś ceritificate
</virtualhost>
<virtualhost XXX.XXX.XXX.XXX:443>
serverName sql.mondomaine.fr
# your own certificate stuff
</virtualhost>