Я хочу обслуживать несколько доменов на моем сервере CentOS. Я запускаю серверы по http. Теперь я хочу запустить эти серверы на https, используя другие сертификаты.
Я написал ssl.conf вот так.
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key
SSLCertificateChainFile /etc/httpd/ssl/ca.crt
ServerName www.example.com:443
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/ssl/two.crt
SSLCertificateKeyFile /etc/httpd/ssl/two.key
SSLCertificateChainFile /etc/httpd/ssl/ca.crt
ServerName two.example.com:443
DocumentRoot /var/www/html/two
</VirtualHost>
Но это не работает. Как я могу это сделать?
Спасибо.
К сожалению, вы не можете. Причина в том, что URL-адрес в запросе клиентского браузера зашифрован вместе с остальной частью запроса, когда он достигает вашего сервера. В результате невозможно расшифровать его, не зная, для какого хоста (и какого сертификата) он был предназначен.
В прошлом я решал эту проблему двумя разными способами. Первый требует доступа к брандмауэру и более одного общедоступного IP-адреса, второй требует более причудливого SSL-сертификата.
У меня работает несколько SSL-веб-сайтов, запустив их на разных портах, а затем направив SSL-трафик с разных IP-адресов на брандмауэр к разным портам на сервере. Итак - один сервер, один внутренний IP-адрес, но отдельный внешний IP-адрес для каждого сайта и использование переадресации портов на брандмауэре для изменения номера входящего порта и, таким образом, направления трафика.
Другой вариант - иметь один сертификат который работает в нескольких доменах. Это известно как сертификат SAN (безопасное альтернативное имя). Geotrust, например, делает то, что вы также можете добавить до 25 доменных имен. Это более простой способ, потому что, когда приходит запрос, каждый сайт использует один и тот же сертификат, поэтому запрос можно расшифровать и обработать так, как вы описываете. Эти сертификаты намного дороже, чем базовые сертификаты SSL, но, честно говоря, они немного лучше.
Вы пытаетесь использовать VirtualHosts на основе имен с использованием SSL / TLS. По умолчанию это невозможно из-за того, как работают SSL / TLS и Http (посмотрите здесь ).
Возможно, вы захотите попробовать SSL с виртуальными хостами с использованием SNI но это также будет затруднительно с существующими сертификатами.