Я искал в SF и понял из Другой сообщения что с TSL можно иметь несколько сертификатов SSL / TSL для разных поддоменов на одном экземпляре Apache. Мне интересно, могу ли я разместить основной домен с одним сертификатом и поддомены того же основного домена с отдельным сертификатом с подстановочными знаками.
Я работаю над сайтом, который в основном работает на английском языке. Когда люди посещают www.example.com, у нас есть правило mod_rewrite, которое перенаправляет их на example.com. Он также перенаправляет простые старые HTTP-запросы на HTTPS. У нас есть сервер, настроенный с действительно хорошим сертификатом расширенной проверки (EV), который окрашивает адресную строку вашего браузера в зеленый цвет - он выглядит довольно безопасным и заслуживающим доверия.
Проблема в том, что мы хотим отображать другие языки на других поддоменах. Например.:
Наш сертификат расширенной проверки недействителен для этих поддоменов, поэтому мы приобрели сертификат с подстановочными знаками и хотели бы настроить apache, чтобы он использовал сертификат EV для запросов HTTPS для example.com и сертификат с подстановочными знаками для запросов HTTPS ко всем языковым поддоменам.
Я понимаю из этот документ поддержки digicert и сообщение serverfault что Apache 2.4.18 должен поддерживать использование нескольких сертификатов SSL для разных доменов. если HTTPS-соединения выполняются с использованием TSL но не если они сделаны с использованием SSL. В документе digicert предлагается создать полностью отдельный раздел VirtualHost, по одному для каждого сертификата, но мне интересно, есть ли другие тонкости, которые мне не хватает. В нашем текущем apache conf, например, отсутствует директива ServerName, и я не уверен, нужно ли мне создавать директиву ServerAlias для каждого поддерживаемого языка или мы можем использовать подстановочный знак в этих конфигурациях apache? Кроме того, субдомены (en.example.com) представляют собой суперстроку основного домена (example.com) - я беспокоюсь, что это может вызвать путаницу при маршрутизации запросов?
В настоящее время наша единственная apache SSL conf на /etc/apache2/sites-available/default-ssl.conf выглядит так, если убрать все комментарии:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html/
SetEnv CI_ENV testing
<Directory /var/www/html>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ev-ssl-certificate.crt
SSLCertificateKeyFile /etc/ssl/private/ev-private.key
SSLCACertificateFile /etc/ssl/certs/ev-IntermediateCA.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Может ли кто-нибудь сказать мне, каков наилучший подход в этой ситуации? В идеале мы будем копировать как можно меньше кода, чтобы это работало. Я также очень признателен за любые предупреждения или ошибки. Например, я подозреваю, что мне нужно отключить протоколы SSL, чтобы использовался только TSL.
Вы должны создать два файла виртуального хоста для хранения информации о виртуальном хосте в отдельных файлах, скопировав конфигурацию из файла виртуального хоста по умолчанию. Для получения дополнительной информации см. Как настроить несколько сертификатов SSL на одном IP-адресе с помощью Apache.
Насколько я понимаю, вы обрабатываете многоязычные сайты в качестве основного сайта на английском языке, а другие сайты на ограниченном языке в качестве поддоменов, вы хотите завоевать доверие клиентов, отображая зеленую полосу с брендом для всех ваших сайтов. Вы можете сделать это с помощью одного EV Многодоменный SSL-сертификат; это позволит включить название вашей компании в адресную строку браузеров для www.example.com, es.example.com, de.example.com и it.example.com. Некоторые примеры поставщиков: