Follow

@rf

Что вы делаете с https сертификатами селфхостед сервисов? Объясню ситуацию:

У меня есть ряд веб-сервисов, которые я поднял на своей машине и пожелал бы не светить внешнему миру. Как следствие, у меня есть впн, через которых я могу до них достучаться. И если прописать в hosts файл локальный адрес вместо публичного, то всё окей, но проблема в том, что на локальный адрес не получить letsencrypt или zerossl сертификат. Да, я знаю про самоподписанные сертификаты, но закидывать их на каждую свою новую машину немного проблемно, а без https браузеры и приложения ругаются и мешают жить. Что-то мне говорит, что должно быть более элегантное решение проблемы, так что если кто сталкивался — я вас слушаю.

@kantor если доступ только из VPN, то можно оставить их работать по HTTP
Надёжный зашифрованный канал уже обеспечен уровнем ниже

@mo Я бы и оставил, но ряд приложений и сервисов ругаются если нет ssl. Браузеры точно ругаются

Покупаешь домен, получаешь сертификат на этот домен (можно поднять VPS или использовать домашний компьютер с dynamic DNS), перекидываешь сертификат и его ключ на машину в локальной сети, поднимаешь сервис, прописываешь домен в hosts где нужно. Не знаю, есть ли другие решения.

@kantor @rf у меня локальный CA для этого есть.

@Voice @rf А с этого момента поподробнее. ЭТо как?

@kantor @rf сделал ключ и к нему сертификат с правом подписи сертификатов и crl, подписал им промежуточный. Раскидал это добро у по устройствам и потом просто сам выписываюи сертификаты для локальных штук. Всё это с помощью openssl и\или easyrsa.

@Voice @rf

раскидал это добро по устройствам

Вот тут и проблема. Например, у меня каким-то образом, возможно, не очень умышленным, ресетнётся андроид. Я накатываю прошивку, там мне предлагают восстановиться с бэкапа. Бэкапы на seedvault, а провайдер — мой некстклауд сервер. Сертификата нет, по 80-му порту не пускает и не должно. Остался без восстановления бэкапа, а уже пост-фактум это дело не иницируешь (тут уже вопросы к lineageos)

@kantor @rf это какой-то совсем edge кейс и не стоит заморочек. Принесёшь сертификат ручками, так же как и ресетнишь.

@Voice @rf гммм, let's say I'm convinced — можно гайд какой-нибудь или литературу? Я не очень хорошо разбираюсь в сертификатах и о том, как вся эта структура работает

@kantor @rf не уверен тогда, что стоит. Можно mitm себе устройить по случайности.

@kantor
на VPS ставлю nginx и настраиваю там сертификат и прокси
базовый конфиг, в интернете много полноценных примеров:
docs.nginx.com/nginx/admin-gui

@OfShad0ws это-то я знаю, пост перечитайте, там вопрос не в том, как поднять реверс-прокси с ssl, а в том, как получить сертификат для того, что в широкий интернет выходить не должно

@kantor
так это, домен купить / взять бесплатный и к нему сертификат выпустить.
платно вроде можно взять сертификат на IP, но домен дешевле будет.

> в широкий интернет выходить не должно

тут проблемы не будет, firewall настройте - VPN для всех (сейчас же так?), а nginx только по VPN.

@OfShad0ws так, вы всё ещё не понимаете ситуацию. ВПН это не в бытовом значении «ой, мне надо обойти блокировку инстаграмчика», а в исходном значении — виртуальная приватная сеть. То есть у сервера локальный адрес, у клиента локальный адрес, всё в локалке и крутится, а впн нужен, чтобы к этой приватной локалке подключаться

@kantor
и что тут меняется?
у вас есть виртуальная *частная* сеть (если уж говорить об исходных значениях), получите белый IP и купите домен.
дальше всё как я написал.

если это решене не подходит, другого у меня нет

@kantor
> но проблема в том, что на локальный адрес не получить letsencrypt или zerossl сертификат.
Неправда ваша. Если у тебя есть домен и доступ к dns api можно получать все что хочешь, не открывая ни единого порта наружу и на сером адресе. https://github.com/acmesh-official/acme.sh/wiki/dnsapi

@suika на локальный адрес по типу 192.168.50.50? Да вы шутите.

@kantor а в чем проблема? У меня так дома Proxmox, Vaultwarden и Jellyfin настроены. Можно добавить запись указывающую на локальный адрес и тебя за это никто не расстреляет
@rf @kantor Можно поднять свой CA внутри и выписывать себе сертификаты :)

Но проще либо не пользоваться TLS вообще, либо использовать самоподписанный.
@rf @kantor Самоподписанный, кстати, для простоты можно использовать один и тот же.

Ну и "браузеры ругаются" - а не хрен бы с ними? :) Предупреждение для конкретных узлов можно выключить.
@rf @kantor Впрочем, есть ещё костыльные варианты, если хочется странного.

1. Регаешь домен в интернете. Ставишь там веб-сервер и выписываешь серт на него.

2. Копируешь серт на внутренние сервисы.

3. В настройках VPN обеспечиваешь разрешение этих адресов на внутренние.

Такой подход часто используется в организациях.

@shuro @rf последний пункт подразумевает под собой DNS?

@rf @kantor Да как удобно. Можно в хосты прописать, можно использовать свой DNS и на нем прописать статику (свой DNS неплохая идея, если используется VPN).

В организациях обычно свой DNS и там прописаны внутренние зоны.

@shuro @rf @kantor
Можно воспользоваться утилитой step-ca. С её помощью можно поднять CA сервер и раздавать сертификаты по ACME протоколу.

@shuro @rf я почти так и делал, но у меня ругалось, мол, айпи не тот, на который сертификат получен. Я помнил, как оно называется, но теперь не помню

@rf @kantor Сертификат обычно выдаётся на домен, а не ip, тогда таких проблем не будет.
@rf @kantor
Да, я знаю про самоподписанные сертификаты, но закидывать их на каждую свою новую машину немного проблемно
По моему также проблемно, как и с letsencrypt и пр. Сгенерировать новый сертификат и указать его в конфигах дело 2-5 минут, а предупреждения браузеров, приложений можно просто игнорить, мол да, согласен, да перейти.

У самого такая же хрень, доступ только через впн, но один сервис без https не работает.
Сертификат не привязан к IP. Иметь публичную DNS зону которая используется для внутренних хостов
letsencrypt Можно обновлять через DNS-challenge (в том числе приватные хосты)

@kantor @rf

@kantor
> У меня есть ряд веб-сервисов, которые я поднял на
> своей машине и пожелал бы не светить внешнему миру.
> Как следствие, у меня есть впн, через которых я могу
> до них достучаться.
Не проще ли открыть на файрволле соответствующие порты только для своего IP-адреса?

@kantor @rf закинь CA сертификат, которым подписывал, в браузеры из которых пользуешься.
Sign in to participate in the conversation
Mastodon 🐘

A general-purpose Mastodon server with a 1000 character limit.

Support us on Ko-Fi Support us on Patreon Support us via PayPal