2012-02-28 4 views
1

Я использую инструмент под названием ISAPI Rewrite 3 Lite от Helicon Tech («apache .htaccess mod_rewrite совместимый модуль для IIS»).ISAPI rewrite - правило «Перенаправление не-www версии на www» с SSL

Я применил правило «Переадресация не-www версии в www» (от: http://www.helicontech.com/isapi_rewrite/doc/examples.htm#hotlinking). то есть:

RewriteEngine on 

RewriteCond %{HTTPS} (on)? 
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC] 
RewriteCond %{REQUEST_URI} (.+) 
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L] 

Это работает нормально, но у меня есть небольшая проблема с предупреждениями браузера при использовании с SSL. Скажите, что мне нужен запрос по URL-адресу: https://MyDomain.com/abc/login.aspx, который перенаправляется на: https://www.MyDomain.com/abc/login.aspx Браузер отобразит предупреждение, подобное: «Сертификат безопасности, представленный на этом веб-сайте, был выпущен для другого адреса веб-сайта». Это имеет смысл, потому что наш сертификат SSL работает только для «www.MyDomain.com» (а не «MyDomain.com»). Если вы нажмете «Продолжить на этот сайт?» он перенаправляет штраф в требуемый URL, и все хорошо.

Мой вопрос: есть ли что-то, что можно сделать, чтобы сделать предупреждение SSL-сертификата браузера НЕ поднятым? (Предпочтительно без необходимости изменения SSL-сертификата).

Спасибо.

EDIT:

Я надеялся, что есть какой-то способ, чтобы получить ISAPI Rewrite, чтобы изменить URL, так что IIS не «видит» запрос: «MyDomain.com», и видит только измененный запрос: «www.MyDomain.com» (так что предупреждение SSL-сертификата не произойдет). Я думал, что это может быть проблема времени. Но похоже, что время событий фиксировано, поэтому IIS всегда проверяет сертификат SSL в контексте исходного запроса? Может ли кто-нибудь подтвердить это?

+0

Обновлен мой ответ в ответ на ваши изменения. –

ответ

2

Если ваш сертификат действителен только для https://www.foo.com, тогда запросы на https://foo.com всегда будут приветствоваться сообщением о несоответствии сертификата.

Подстановочные сертификаты часто являются дорогостоящими, но если вы немного по магазинам, вы можете найти их рядом с ценой обычного сертификата.

Очевидным решением было бы не отправлять трафик на https://foo.com, если вся деятельность должна состояться на субдомене www. В конце концов, вы получите одно и то же сообщение, отправив трафик на https://xyz.foo.com, но это не проблема, потому что нет причин отправлять туда трафик. Аналогичным образом, вероятно, нет причин отправлять трафик на https://foo.com.


В ответ на Ваше обновление:

Я надеялся, что есть какой-то способ, чтобы получить ISAPI Rewrite, чтобы изменить URL, так что IIS не «видит» запрос: «MYDOMAIN .com "и видит только измененный запрос:« www.MyDomain.com »(так что предупреждение SSL-сертификата не произойдет). Я думал, что это может быть проблема времени. Но похоже, что время событий фиксировано, поэтому IIS всегда проверяет сертификат SSL в контексте исходного запроса? Может ли кто-нибудь подтвердить это?

Это не проблема времени. В IIS есть, чтобы «просмотреть» запрос, чтобы перенаправить его, и он должен представить свою личность по каждому запросу.Соответствующие браузеры должны предупреждать пользователя (или просто «повесить трубку»), когда идентификатор сервера не совпадает с именем хоста.

http://tools.ietf.org/html/rfc2818#section-3.1

Если имя хоста доступны, клиент должен проверить его против личности сервера, как представлено в сообщении сертификата сервера, для того, чтобы предотвратить человек-в-середине атаки.

[...]

Если имя хоста не соответствует личности в сертификате, пользователь ориентированные клиенты должны либо уведомить пользователя (клиенты могут дать пользователю возможность продолжить с подключением в любой case) или прекратить соединение с ошибкой плохого сертификата.