Самозаверяющий сертификат для устройства с локальным IP - PullRequest
0 голосов
/ 04 июля 2018

Сценарий:

  • У нас есть устройство, похожее на WiFi-маршрутизатор, с открытым пользовательским интерфейсом и API
  • Устройство будет работать в любой локальной сети вне нашего контроля, точно так же, как маршрутизатор WiFi работает в любом доме.
  • Устройство не принадлежит ни к какому домену и доступ к нему осуществляется через его IP-адрес (т.е. 192.168.1.100) с помощью браузера.
  • Протокол должен быть HTTPS
  • Используется программное обеспечение .net Core / Kestrel в Windows
  • В настоящее время во всех браузерах появляются предупреждения о том, что устройство имеет недействительный сертификат.
  • Ограничение: устройство должно быть доступно любому компьютеру (настольному ПК / планшету) и не может ничего устанавливать или настраивать на клиентских машинах.

Вопрос: Какой самый лучший способ убрать предупреждение? Мы читаем, что не может быть обычных сертификатов для частных / локальных IP-адресов.

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

Local environment

1 Ответ

0 голосов
/ 04 июля 2018

Нет способа выдать SSL-сертификат для IP-адреса; у вас должно быть фактическое имя , для которого вы создаете сертификат. Чтобы получить такое имя, вам нужен DNS. Поскольку у вас нет доступа к внутреннему DNS этой локальной сети, вам придется использовать для этого общедоступный DNS-сервер.

Это предполагает, что устройства в этой сети действительно имеют доступ к Интернету. Если они этого не делают, то вам совершенно не повезло.

Если есть доступ в Интернет, вы можете просто сделать публичный (суб) домен указателем на ваш локальный IP-адрес. В основном, настройте DNS для домена, которым вы владеете, чтобы в домене или в одном из его поддоменов находилась запись A, которая указывает на ваш локальный IP-адрес 192.168.1.100.

Таким образом, вы можете передать этот публичный домен другим, и когда они попытаются разрешить домен, они получат DNS, который даст локальный IP-адрес. Таким образом, устройства в этой сети могут получить доступ к вашему устройству и получить к нему доступ. Поскольку они получают к нему доступ через этот домен, сертификат для этого конкретного домена будет общепринятым.

Теоретически это работает довольно хорошо. На практике это может быть немного сложным или дорогим, хотя. Срок действия сертификатов сервера истекает, поэтому вам придется включить сертификат ( secure! ) в ваше устройство, а также предоставить некоторые средства для его обновления в конце срока его действия. Срок действия бесплатных сертификатов, таких как letsencrypt, истекает через несколько недель, но за деньги вы сможете купить сертификаты, срок действия которых истекает не так быстро.

Но, в конце концов, все равно будет несколько больно. Но не из-за имени домена, а скорее из-за сертификата - по крайней мере, если вы хотите сертификат, которому доверяют автоматически. В противном случае вы бы вернулись в начале.

...