У меня есть веб-сайт, который сейчас находится в стадии разработки, и к нему можно получить доступ по IP двумя способами: на сайте внутренней сети компании можно получить доступ через 198.162.0.10/WebSite и из Интернета 212.19.10.50:1234/WebSite
Когда пользователь переходит на 212.19.10.50:1234, он перенаправляется на 198.162.0.10 с портом 443 для https.
Как в моем случае установить сертификат сервера? Мне нужно, чтобы он работал без проблем с сертификатом как во внутренней, так и во внешней сети.
Можно ли создать 2 сертификата для одного сайта, чтобы IIS выбрал сертификат prober в моем случае?
А какие сертификаты SAN inside должны быть для внешней сети? Внешний IP?
Хотя технически можно настроить IIS для поддержки этого, вы не сможете получить сертификаты SSL для такого типа настройки. Я объясню позже ...
При использовании SSL важно помнить, что проверку сертификата выполняет браузер клиента. Поэтому важно, какой адрес браузер клиента использует для подключения к серверу. Это адрес (также называемый common name
или CN), для которого сертификат должен быть действительным.
Если у вас есть клиенты, которые подключаются к одному и тому же веб-сайту с двумя разными именами хостов (или IP-адресами в данном случае), вы должны иметь либо два сертификата для двух имен хостов, либо многодоменный сертификат. Последний самый простой в установке, но и более дорогой. Но добавить два сертификата на один сайт тоже не так сложно. Вам нужно только убедиться, что у вас есть два отдельных IP-адреса, привязанных к одному и тому же веб-сайту. Для каждой привязки SSL требуется собственный IP-адрес. Поскольку сервер находится во внутренней сети, я думаю, не так уж сложно добавить дополнительный IP-адрес (например, 198.162.0.10
и 198.162.0.11
).
Вы устанавливаете оба сертификата на сервер обычным способом, а затем переходите к привязкам для веб-сайта. Сначала вы добавляете первый IP-адрес (например, 198.162.0.10
), который используется для доступа к серверу из общедоступного Интернета. Вы выбираете HTTPS в качестве протокола, а затем выбираете сертификат, который имеет общедоступное имя хоста / IP-адрес в качестве общего имени. Не имеет значения, что имя хоста / IP-адрес сертификата не совпадает с внутренним IP-адресом. Опять же, сервер ничего не делает с этим, это клиентский браузер проверяет сертификат.
Затем вы добавляете второй IP-адрес (например, 198.162.0.11
), который вы используете для внутреннего доступа к серверу. Вы снова выбираете HTTPS в качестве протокола, но на этот раз вы выбираете сертификат, который имеет внутренний IP-адрес (т.е. 198.162.0.11
) как общее имя. И тогда все должно быть сделано.
Но ... хотя есть несколько центров сертификации, которые предоставляют сертификаты для IP-адресов, это должны быть общедоступные IP-адреса, и вы должны иметь возможность доказать, что вы являетесь владельцем этих IP-адресов (например, записи RIPE). Однако они не будут предоставлять сертификаты для диапазонов частных IP-адресов (например, 192.168.x.x). И это то, что вам нужно для этой настройки, так что вам не повезло.
Два решения: либо убедитесь, что ваш веб-сайт доступен по общедоступному IP-адресу из внутренней сети, и получите один сертификат для этого общедоступного IP-адреса. Или сделайте его доступным с одного и того же имени хоста как из общедоступного IP-адреса, так и из внутренней сети. Это имя хоста можно сопоставить с внутренним IP-адресом внутренней сети, это не проблема, если имя хоста (= общее имя) совпадает. В конце концов, это все, что проверяет браузер.
Итак, насколько я понимаю, сервер опубликован 212.19.10.50:1234 и есть обратный прокси-сервер, который перенаправляет внешний трафик на сайт? Скорее всего, вам понадобится сертификат для обратного прокси-сервера, чтобы он мог правильно перенаправлять трафик. Этому нужна только внешняя запись DNS.
Вы можете использовать решение с разделенным DNS, в котором ваш внутренний DNS дает внутренний IP-адрес, а внешний DNS-сервер дает другой, тогда вам нужен только один сертификат сервера без SAN.
В качестве альтернативы, если вам нужны разные URL-адреса, вы можете использовать альтернативные имена субъектов, имя субъекта в этом случае не имеет значения, это может быть что угодно. Просто добавьте два SAN: один - 198.162.0.10, а второй - 212.19.10.50 (или их эквиваленты DNS).
Чтобы упростить задачу, вы можете разместить сайт полностью извне, тогда вам понадобится только один сертификат, и вы не сможете шифровать трафик между прокси-сервером и iis. Или вам может понадобиться сертификат для прокси и сертификат для сайта.