Включить HTTPS в частной сети

Моя компания занимается созданием программного обеспечения для презентаций. При использовании докладчики входят через веб-сайт с поддержкой HTTPS для отправки текста, документов, токенов аутентификации и т. Д.

Как включить связь HTTPS, когда:

  1. Существует только динамический внутренний адрес IPv4 (196.168.0.x) и некоторый адрес IPv6.
  2. Веб-сайт может быть только внутренним. ( https://letsencrypt.org/ не может связаться с ним.)
  3. Ручные шаги не допускаются. Клиент устанавливает программное обеспечение, и это хорошо.

Для тех, кто заинтересован, я использую C# control Httplistener и PowerShell.

Некоторые из моих исследований:

  1. Httplistener с поддержкой HTTPS
  2. Как включить HTTPS на вашем сайте бесплатно
  3. Как получить HTTPS: настройка SSL на вашем сайте
  4. Создайте самоподписанный сертификат на лету

3 ответа

Если ваше внутреннее доменное имя совпадает с внешним доменным именем (например, sales.corp.example.com) вы все равно можете получить сертификат от большинства общедоступных ЦС, так как они примут право собственности на example.com предполагая, кто владеет admin@example.com/webmaster@example.com/ все, что с удовольствием одобрит ваш запрос на сертификат. Сам сайт не должен быть доступен через Интернет. Есть другие провайдеры, которые реализуют протокол Let's Encrypt ACME, поэтому, если вы не можете соблюдать их требования, вы все равно сможете использовать тот же протокол с другим провайдером.

Если ни одна часть вашего внутреннего домена не является общедоступной (например, вы использовали поддельный домен верхнего уровня, например sales.corp.example.local), тогда ваш единственный вариант - использовать внутренний CA.

Если вы хотите использовать внутренний ЦС для подписи своих сертификатов, то вам необходимо установить этот ЦС в качестве надежного поставщика на всех ваших устройствах. И если вы хотите сделать это "правильно", то это довольно обширная вещь для настройки (обычно у вас есть корневой ЦС, который живет в автономном режиме и подписывает подчиненный ЦС, который фактически подписывает ваши сертификаты). Вам понадобятся процессы, чтобы вращать корневые сертификаты, когда они истекают, и способ их распространения (если вы полностью интегрированы в домен Windows без устройств Linux, это на самом деле не так уж сложно).

Когда-то было возможно пойти в ЦС и попросить их выдать сертификат для внутреннего домена и пройти длительную и дорогостоящую процедуру проверки, однако новые процедуры, введенные 1 июля 2012 года, запретили любому ЦС выдавать любой сертификат, содержащий внутреннее общее имя с 2015 года и аннулирование существующих сертификатов к 2016 году. Так что, если у вас нет машины времени, этого не произойдет.


Как в сторону:

Клиент устанавливает программное обеспечение, и это хорошо, чтобы пойти

Это вряд ли когда-либо случится. За эти годы я установил много корпоративного программного обеспечения, и мне всегда приходилось вручную настраивать TLS. Существует множество причин, по которым вы не можете предполагать, что можете настраивать сертификаты автоматически:

  • Клиент может не иметь доступа в Интернет с хоста, поэтому вы не можете связаться с внешним органом
  • У клиента может быть очень ограниченный список утвержденных центров сертификации, и вы должны иметь выданный им сертификат
  • Клиент может потребовать проверки всех сертификатов, выданных для внутренних имен хостов.

На самом деле, если бы ваше устройство было в моей сети с автоматически настроенным, действительным, доверенным сертификатом SSL из коробки, я был бы крайне подозрительным. Существует множество устройств, позволяющих одним нажатием кнопки настроить Let's Encrypt, но это никогда не будет по умолчанию. Он всегда включен.

Ручные шаги не допускаются. Клиент устанавливает программное обеспечение, и это хорошо.

Если вы не контролируете устройства конечных пользователей, никакие дополнительные действия не означают, что вы должны использовать ЦС, уже находящийся в их хранилищах корневых сертификатов (ОС или браузер). Внутренняя PKI клиента может подписывать ваши сертификаты, но это предполагает, что они есть, и это не будет работать для неуправляемых устройств. Который оставляет известный "общественный" CA.

Веб-сайт может быть только внутренним. ( https://letsencrypt.org/ не может связаться с ним.)

Проблемы с владением не должны быть связаны с хостом, который получает сертификат. Вы упомянули Let's Encrypt, их вызов DNS может быть сделан с любого видимого в Интернете DNS. Включая подстановочные знаки, чтобы вы могли выдать *.present.example.com,

В моей компании у нас есть несколько интранет-сайтов. Из-за недавних / текущих изменений политики браузера мы настраиваем их с поддержкой HTTPS/TLS.

Поскольку эти сайты предназначены только для внутреннего использования, мы решили настроить собственный центр сертификации с помощью службы центра сертификации Microsoft Active Directory (MS AD CA). Кроме того, мы используем URL-адреса [Company Name].local для веб-сайтов.

Используя службу AD CA, мы создали сертификат RootCA, который распространяется по всем системам, подключенным к домену, через контроллер домена. Используя службу AD CA, мы можем выдавать сертификаты для различных внутренних веб-сайтов и устройств с веб-интерфейсами.

Затем мы используем службу DNS активного каталога для настройки домена.local, чтобы назначить правильные IP-адреса для правильных URL-адресов. В качестве внутреннего AD DNS является основным DNS для нашей сети.

Единственная проблема, с которой мы столкнулись при таком подходе, заключается в том, что браузер Firefox не использует хранилище сертификатов Windows и должен импортировать созданный сертификат RootCA вручную. Судя по моим ограниченным исследованиям, представляется возможным автоматически импортировать сертификат RootCA в хранилище сертификатов Firefox, но из-за ограниченного количества пользователей Firefox мы решили использовать ручной подход. Кроме того, если я правильно помню, есть команда запроса функции, ожидающая решения от команды разработчиков Firefox, чтобы разрешить доступ к хранилищу сертификатов Windows.

Это, казалось бы, самое надежное решение для нашей ситуации, ваш пробег может отличаться:)

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

Другие вопросы по тегам