Как использовать в одном и том же сертификатах Apache2 Server 2 различные сертификаты с использованием VirtualHost?

StackOverflow https://stackoverflow.com/questions/1548288

  •  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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top