Let's Encrypt: использовать альтернативное имя субъекта для внутреннего домена

Мой Synology NAS способен запускать веб-интерфейс через HTTPS. По умолчанию вы обращаетесь к NAS через его имя (скажем, mynas) так http(s)://myname:5001 или же http(s)://myname.local, По умолчанию используется сертификат SSL для synology.com,

Вы можете создать новый сертификат, используя Let's Encrypt; вы перенаправляете необходимые порты с вашего маршрутизатора на ваш NAS, я создал поддомен из домена, которым я владею, и обновил DNS, чтобы он указывал на мой домашний ip. (например home.my-domain-i-own.com)

Я надеялся, что смогу войти myname;myname.local в качестве альтернативных имен субъектов, поэтому я могу просматривать свой NAS внутри по HTTPS без предупреждения. Тем не менее, Let's Encrypt не принимает доменные имена, которые он не может проверить, по-видимому.

Мой вопрос: как решить проблему, я могу использовать сертификат Let's Encrypt с моим доменом mynas.local без каких-либо предупреждений?

2 ответа

Эта проблема

Вам не принадлежит доменное имя mynas.localТак что, конечно, Let's Encrypt не подпишет сертификат о том, что вы являетесь владельцем этого домена. Если бы они подписали такие сертификаты, браузеры очень скоро перестали бы доверять Let's Encrypt.

Вместо этого вам нужно использовать собственное доменное имя для доступа к NAS независимо от того, откуда вы к нему обращаетесь. Это не только из-за сертификата, но и потому, что это более удобно, если у вас есть какие-либо мобильные устройства, которым требуется доступ к NAS как внутри вашей локальной сети, так и снаружи.

Похоже, у вас есть NAT в вашей сети, который мешает просто указать ваше доменное имя на IP вашего NAS. Если вы не используете NAT, это будет просто работать.

Решение

Идеальное решение - использовать сеть без NAT. Вы можете по-прежнему иметь брандмауэр, блокирующий подключения извне ко всему, кроме порта HTTPS на NAS, если хотите.

Вряд ли ваш интернет-провайдер даст вам достаточно IPv4-адресов для такой настройки, поэтому, если вы хотите сделать это таким образом, вам придется делать это с IPv6.

Вы можете настроить свою локальную сеть таким образом, чтобы IPv4 транслировался NAT вашим шлюзом, а IPv6 маршрутизировался без NAT. Для имени, которое вы выбрали для своего NAS, вы можете затем создать запись A, указывающую на ваш NAT, и запись AAAA, указывающую на NAS.

Клиенты в вашей локальной сети будут иметь путь IPv6 непосредственно к NAS и должны предпочитать использовать запись AAAA. Использование IPv4-адреса будет связано с NAT шпильки, но это будет использоваться только в качестве запасного варианта в случае сбоя соединения IPv6. Учитывая, что клиент и NAS будут находиться всего в одном переходе друг от друга без маршрутизатора между ними, очень редко случается сбой подключения IPv6.

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

Обходной путь

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

Вы можете настроить свой собственный DNS-сервер на шлюзе NAT. Этот DNS-сервер должен считать себя авторитетным для вашего домена и использовать все остальное. Этот DNS-сервер должен будет раздавать локальные адреса при запросе вашего домена.

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

Это невозможно, потому что вы не владеете mynas.local этот домен в интернете (т.е. право собственности).

В дополнение к ответу касперда это пример обходного пути.

Я использовал DNS для решения этой проблемы в моей домашней сети. Я использую пи-отверстие для предоставления службы DNS на RaspberryPi. На панели управления выберите "Локальные записи DNS" и поместите mynas.synology.me как имя хоста с его IP-адресом.

Я использую Synology Active Backup for Business Agent для защиты своих локальных компьютеров, поэтому при изменении сертификата резервное копирование прекращается, поскольку агент должен создать исключение для нового сертификата. Это должно позволить моим резервным копиям продолжать работать даже при изменении сертификата.

Let's Encrypt (или любой другой публичный центр сертификации) не выдаст вам сертификат для домена, если вы не докажете, что являетесь его законным владельцем; в этом весь смысл сертификатов: доказывать клиентам, что они действительно подключаются к серверам, которые они ищут; если бы кто-нибудь мог получить доверенные сертификаты для любого домена, они были бы совершенно бесполезны.

Как говорили другие, решение состоит в том, чтобы использовать домен, которым вы действительно владеете; вы получаете для него сертификат, устанавливаете его на NAS и указываете на него свой внутренний DNS, чтобы при попытке браузера подключиться к "nas.mydomain.com" он переходил на внутренний IP-адрес NAS (и находил действующий сертификат там).

Другое решение - настроить внутренний ЦС, убедитесь, что ваш браузер доверяет ему, и используйте его для создания сертификата для вашего NAS; это позволит вам создавать сертификаты для любого домена (но, конечно, только вы им доверяете). Однако для этого потребуется сервер, на котором будет запускаться CA (это встроенная роль в серверах Windows, наверняка есть аналогичные решения для Linux).

Однако, IMHO, самым простым решением было бы создать самозаверяющий сертификат, установить его на NAS и указать браузеру, чтобы он просто доверял ему; таким образом браузер перестанет жаловаться. Как это сделать, зависит от браузера и операционной системы, которую вы используете.

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