2012-01-12 5 views
1

У меня есть два приложения (PHP и .NET), работающие на одном компьютере, но на разных серверах (один на Apache и один на IIS). У меня также есть сертификат SSL, используемый приложением PHP. Я хочу, чтобы мое приложение .NET работало с одним и тем же доменным именем и использовало тот же сертификат.Apache и IIS используют один и тот же SSL-сертификат

Как настроить серверы?

Буду признателен за любую помощь.

ответ

3

HTTPS только проверяет имя хоста при проверке сертификата (см RFC 2818 Section 3.1), а не порт, так что вы не должны иметь никаких проблем с использованием того же сертификата для двух различных приложений на том же хосте.

Вы могли бы:

  • Apache HTTPd на https://www.example.com/ (порт 443, по умолчанию)
  • IIS на https://www.example.com:8443/ (порт 8443)

Где это собирается быть проблемой, если вы хотите использовать тот же порт для Apache Httpd и IIS. Не обязательно иметь другой сервер, работающий на нестандартном порту для HTTPS: это может вызвать проблемы, так как некоторые брандмауэры (и некоторые прокси-серверы) не позволят вам подключаться к HTTPS на другом порту, чем 443 (или, по крайней мере, , порт 8443 не будет открыт).

Решение этой проблемы заключается в использовании Apache Httpd в качестве интерфейса и пересылки «раздела» запроса (например, eveything, начинающегося с https://www.example.com/iis/) в IIS в задней части. Это можно сделать с использованием обратного прокси (см. mod_proxy_http в Apache Httpd). Если ваш сервер IIS находится на том же компьютере, перенаправление может эффективно перейти на localhost (на порт по вашему выбору для IIS, возможно, не по умолчанию 80). В этом случае соединение между Apache Httpd и IIS не нужно защищать с помощью SSL/TLS, поэтому вам не нужно будет устанавливать сертификат для IIS (вы можете, если хотите, но это не полезно для localhost соединений). Все соединения SSL/TLS от пользователей завершатся Apache Httpd, которые затем отправят внутренне запрос IIS в обратную сторону.

Возможно, в Apache Tomcat (или контейнере Java) за Apache Httpd может быть больше документации, но при замене Tomcat на IIS эти принципы должны быть одинаковыми.

Вот некоторая документация по Apache HTTPd с Jetty: http://wiki.eclipse.org/Jetty/Howto/Configure_mod_proxy#Configuring_Apache_mod_proxy_with_Jetty

С точки Apache HTTPd зрения с использованием IIS вместо Jetty должны быть очень похожи. Возможно, вам придется настроить конфигурацию IIS, чтобы заставить ее притворяться, что входящие запросы поступают через HTTPS (поскольку они будут проходить через простой HTTP), если некоторые из ваших приложений IIS настроены на это.

Я думаю, что IIS также имеет возможности обратного прокси-сервера, поэтому, если этот подход слишком сложный, вы должны иметь возможность отменить роли. Ищите IIS в качестве точки входа HTTPS и помещайте приложение Apache/PHP в обратную сторону.

+0

Это удивительно удивительный ответ! – Oliver

+0

IIS может выступать в качестве обратного прокси для Apache HTTPD, Apache Tomcat и, возможно, других, используя его модуль маршрутизации запросов приложений (ARR). Могут быть лучшие варианты настройки вашей установки, но если вам нужно, чтобы IIS направлял входящие запросы, ARR работает. Текущая ссылка на него: http://www.iis.net/downloads/microsoft/application-request-routing. –

0

SSL в основном зарегистрирован на полное доменное имя, например. www.mydomain.com

Если у вас нет подстановочного SSL-кода, то, если у вас нет IIS и appache, обслуживающих тот же самый домен, например. www.mydomain.com, что было бы странно, поскольку вы столкнулись бы с конфликтами при запуске запроса на указанный домен.

Но установка SSL на IIS просто следуйте приведенному ниже руководству.
IIS7 http://www.globalsign.com/support/install/install_iis7.php
IIS5 + 6 ч ttp://www.globalsign.com/support/install/install_iis5.php

+0

Я нашел решение для настройки обратного прокси-сервера на Apache, но есть некоторые проблемы с перенаправлением запросов на IIS на том же компьютере. Обратный прокси-сервер должен работать в моем случае. – cichaczem

Смежные вопросы