Подстановочный SSL с несколькими доменами

У меня есть сервер CentOS/Apache+OpenSSL. Я размещаю два доменных имени с поддоменами с подстановочными знаками (логика приложения показывает правильный сайт), например.

https://*.testing1.com

https://*.testing2.com

Он отлично работает через HTTP: -

   <VirtualHost *:80>
  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin [email protected]
  ServerName  testing1.com
  ServerName  testing2.com

  ServerAlias *.testing1.com *.testing2.com

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /home/app/public_html/public

</VirtualHost>

Я приобрел два SSL-сертификата Wildcard для testing1.com и testing2.com, но я не уверен, как настроить его в этой структуре: -

    <VirtualHost *.testing1.com:443>
     SSLEngine On
     SSLCertificateFile /etc/httpd/ssl/*.testing1.com.crt
     SSLCertificateKeyFile /etc/httpd/ssl/*.testing1.com.key
     SSLCACertificateFile /etc/httpd/ssl/geotrust.cer

     ServerAdmin [email protected]
     ServerName testing1.com
     ServerAlias *.testing1.com

        DirectoryIndex index.html index.php
        DocumentRoot /home/app/public_html/public

  </VirtualHost>

   <VirtualHost *.testing2.com:443>
     SSLEngine On
     SSLCertificateFile /etc/httpd/ssl/*.testing2.com.crt
     SSLCertificateKeyFile /etc/httpd/ssl/*.testing2.com.key
     SSLCACertificateFile /etc/httpd/ssl/geotrust.cer

     ServerAdmin [email protected]
     ServerName testing2.com
     ServerAlias *.testing2.com

        DirectoryIndex index.html index.php
        DocumentRoot /home/app/public_html/public

  </VirtualHost>

Вышеприведенное для SSL не работает ни с определением *.testing1.com, ни только с testing1.com.

Мне также нужно будет повторить это для testing2.com


person Jon    schedule 10.11.2012    source источник
comment
Я немного не в себе, но разве /etc/httpd/ssl/*.testing1.com.crt не является путем к файлу? может есть астерикс? извиняюсь за нубство   -  person Matthew Sainsbury    schedule 10.11.2012


Ответы (2)


Виртуальные хосты на основе имени и SSL будут работать только в том случае, если все виртуальные хосты находятся в одном домене, и у вас есть подстановочный SSL-сертификат для этого домена.

Но у вас 2 разных домена.

В этом случае это будет работать, только если вы дадите каждому виртуальному хосту с поддержкой SSL свой собственный IP-адрес. Поэтому вы должны использовать виртуальные хосты на основе IP, а не на основе имени.

Объяснение: Запрошенное имя сервера содержится в заголовках HTTP-запроса, но перед этим должно быть настроено шифрование SSL. Таким образом, имя сервера доступно только после настройки шифрования. Поэтому Apache никогда не узнает, какой SSL-сертификат выдает, и просто использует первый доступный на этом конкретном IP-адресе.

person Arjan Groenemeijer    schedule 10.11.2012

С одним выделенным IP-адресом мы можем настроить SSL с подстановочными знаками на основе домена на сервере centos + apache2.2.

Надеюсь, приведенные ниже конфигурации помогут вам, ребята!

NameVirtualHost IP:80
NameVirtualHost IP:443

Домен 1

<VirtualHost IP:80>
        ServerName      abc.domain1.com
        DocumentRoot    /var/www/html/domain1
</VirtualHost>
<VirtualHost IP:443>
        ServerName      *.domain1.com
        DocumentRoot    /var/www/html/domain1
        SSLEngine       On
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile      /var/www/html/domain1/cert/5465456.crt
        SSLCertificateKeyFile   /var/www/html/domain1/cert/domain1.com.key
        SSLCertificateChainFile /var/www/html/domain1/cert/g2-g1.crt
</VirtualHost>

Домен 2

<VirtualHost IP:80>
        ServerName      abc.domain2.com
        DocumentRoot    /var/www/html/domain2
</VirtualHost>
<VirtualHost IP:443>
        ServerName      abc.domain2.com
        DocumentRoot    /var/www/html/domain2
        SSLEngine       On
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile      /var/www/html/domain2/cert/5465456.crt
        SSLCertificateKeyFile   /var/www/html/domain2/cert/domain1.com.key
        SSLCertificateChainFile /var/www/html/domain2/cert/g2-g1.crt
</VirtualHost>
person Vivek Sathisan    schedule 09.04.2018
comment
Спасибо, а что, если я хочу направить два разных https-домена на один и тот же DocumentRoot? - person Dror; 30.01.2019