Wildcard SSL с несколькими доменами
У меня есть CentOS/Apache+OpenSSL сервер. Я размещаю два доменных имени с поддоменными поддоменами (логика приложения отображает правильный сайт), например
https: //*.testing1.com
https: //*.testing2.com
Он отлично работает по HTTP:-
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin webmaster@testing1.com
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>
Я купил два сертификата Wildcard SSL, сертифицированных как для testing1.com, так и для test2.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 john@testing1.com
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 john@testing2.com
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
2 ответа
Виртуальные хосты на основе имен и SSL будут работать только в том случае, если все виртуальные хосты находятся в одном домене, и у вас есть сертификат SSL с подстановочным знаком для этого домена.
Но у вас есть 2 разных домена.
В этом случае он будет работать только в том случае, если вы предоставите каждому виртуальному хосту с включенным SSL свой IP-адрес. Поэтому вы должны использовать виртуальные хосты на основе IP, а не на основе имен.
Объяснение: Запрашиваемое имя_сервера содержится в заголовках HTTP-запроса, но перед этим должно быть уже настроено шифрование SSL. Таким образом, имя_сервера доступно только после настройки шифрования. Поэтому Apache никогда не узнает, какой SSL-сертификат выдан, и просто использует первый, доступный для данного IP-адреса.
С помощью одного выделенного 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>