Я размещаю несколько веб-сайтов на сервере с одним IP-адресом. У меня есть единый сертификат для одного из доменных имен. Есть ли способ настроить Apache так, чтобы сертификат применялся только к этому единственному домену, а не к другим на одном IP-адресе? Сейчас установка работает, но для всех используется один и тот же сертификат, что, очевидно, не то, что мне нужно. Я не хочу настраивать SSL для этих других доменов, а просто отключу функцию SSL для всех, кроме одного домена.
Пример был бы действительно полезен!
Спасибо!
Из-за того, как обычно работает SSL, то, что вы хотите, невозможно. Когда вы понимаете, как работает https, легко понять, почему. Когда браузер устанавливает HTTP-соединение, происходит то, что сначала создается TCP-соединение, а затем начинается разговор по HTTP-протоколу через это TCP-соединение. Протокол HTTP позволяет клиенту сказать: «Я собираюсь получить страницы с сервера с именем 'www.example.com'». Это имя сервера используется apache для решения, какой VirtualHost использовать.
С HTTPS происходит то, что устанавливается TCP-соединение, затем согласовывается SSL (сервер отправляет сертификат клиенту, клиент проверяет, является ли сертификат законным, они обмениваются ключами сеанса), затем они говорят HTTP через этот зашифрованный SSL TCP-соединение, и только после этого клиент может сказать, с каким именем сервера они собираются разговаривать.
Итак, проблема в том, что они уже согласовали SSL-соединение, прежде чем сервер узнает, с каким сервером они пытаются разговаривать.
Идентификация имени сервера намеревается расширить SSL / TLS, чтобы позволить клиенту указывать имя сервера как часть согласования SSL, но это еще не поддерживается в браузерах достаточно широко, чтобы полагаться на него.