Как стать автором
Обновить

Комментарии 21

потому что надо явно прописать DNS TXT запись

...

Продление по расписанию...

Эм, я может чего-то не понял, но ключ для DNS TXT каждый раз генерируется новый. Т.е. если у acme.sh нет доступа к DNS API, то ключ надо вписывать руками и смысл расписания теряется, как и идеологии LE - автоматический выпуск сертификатов.

Второй вопрос, более холливарный - зачем выставлять DSM напрямую в интернет? VPN\Wireguard?

Да тот же NGINX с реверс-прокси и BasicAuth будет явно безопаснее. На нем можно и 80 порт держать отдельно для LE.

зачем выставлять DSM напрямую в интернет

Например, я держу на нём self-hosted Bitwarden, который категорически отказывается работать без валидного https. Мой смартфон синхронизируется с ним, получает с него список контактов, отправляет туда фотоньки, вот это вот всё. Я с него музыку себе стримлю и видео. Удобно. Файл другу пошарить ссылкой, которая автоматически удалится на следующий день, или открыть кому-то upload с той же целью. Очень удобно.

Это всё если личное применение. Если в бизнесе, то там свой коленкор. Сейчас, когда все на удалёнке есть частные случаи, когда VPN не работает (обычно необновлённые домашние станции на Win7-), а обмен файлов прямо необходим. Опять же, что-то централизованно пошарить каким-то партнёрам, к которым не приедешь VPN настраивать в их офис.

В паре филиалов у нас видеонаблюдение на базе Synology. Всё было красиво и изолировано, пока не нарисовалось пару насяльнике, которые хотели видео со склада ИРЛ со смартфона с любой точки мира смотреть. Заворачивали видеопоток в ВПН получали страшное проседание видеопотока

Кейсы есть. Немало.

Да тот же NGINX с реверс-прокси и BasicAuth будет явно безопаснее.

Встороенными средствами? Я не придумал как. Если копаться в ssh и руками что-то доколхоживать - это может взять и пропасть. Второй абзац текста об этом. Докупать и устанавливать ещё один слой железа между роутером и насом? При наличии штатных средств вроде как оверкилл.

 но ключ для DNS TXT каждый раз генерируется новый. Т.е. если у acme.sh нет доступа к DNS API, то ключ надо вписывать руками и смысл расписания теряется

Нет, ключ нужен один раз при первой инициализации, дальше acme после успешной проверки запоминает, что всё валидно и дальше нормально делает renew. На стороне acme ключ вообще нигде ни разу не вводится. По крайней мере на тестах и на демо-развёртывании под написание этой статьи такое поведение не было обнаружено. Более того, в апреле этого года у меня был успешный renew на старой реализации acme-автопродления, который так же сгенерировал сертификаты с полуручном режиме, но обновлять TXT запись, заведённую за месяц до этого не пришлось.

тот же докер с Nginx Proxy Manager решает проблему и с сертификатами и с self-hosted Bitwarden и с другими аппликациями с внешним доступом

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

Нет, ключ нужен один раз при первой инициализации, дальше acme после успешной проверки запоминает, что всё валидно и дальше нормально делает renew.

Т.к. вы не используете DNS API, следовательно используете DNS manual mode (это в принципе и из команд видно). Если заглянуть в документацию то можно увидеть:

На главной

Take care, this is dns manual mode, it can not be renewed automatically. you will have to add a new txt record to your domain by your hand when you renew your cert.

Please use dns api mode instead.

DNS Manual Mode

Warning: DNS manual mode can not renew automatically.

...

DNS manual mode should be used for testing. If you do use it for your production server, remember to renew your certificate within 90 days.

Вангую, что у токена есть TTL и когда вы ставили тесты он еще не успел протухнуть. А по факту через 60-90 дней получите тыкву =) как-то так.

---

Про торчащий наружу DSM - вопрос был не про юз кейсы, а про зачем сервисы DSM выставлять напрямую. Разверну мысль:

  1. Пользователям удобнее использовать домены 3 уровня для доступа к сервисам, а не запоминать порты. Что удобнее набирать video.example.com, files.example.com, photos.example.com или dsm.example.com:8001, dsm.example.com:8002, dsm.example.com:8004 и держать в голове что куда ведет? А потом появится еще пять сервисов который надо будет выставить в интернет (ну там х.з. корпоративный гитлаб, веб-морду почтаря и т.д.) и вот у вас уже люди ходят со списком а-ля телефонный справочник.

  2. Безопасность. Synology конечно выпускает апдейты и они молодцы что фиксят, но их количество наводит на мысль, что не все там так хорошо и радостно. Плюс сам DSM не то что бы сильно был защищен на L7 - да, там есть про брут-форс и защиту от DDoS - но эт такое себе. Предположу, что CPU на это не заточен и уйтдет в оверхеад сразу же и те кто работают в локалке получат тормоза и недоступность сервиса. И вот как вы в DSM будете давать отлуп всяким поисковым роботам и прочим сканерам?

  3. Надеяться на то что SSL защитит от всех и вся... оптимистичненько, особенно для корпоративных данных. Кстати, сколько попугаев DSM показывает в www.ssllabs.com/?

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

Иные допущения, основанные на факте необходимости в сертификатах тоже крайне любопытны. :)

когда вы ставили тесты он еще не успел протухнуть. А по факту через 60-90 дней получите тыкву

90 дней это как раз крайний срок обновления сертификата. при новом обновлении TTL токена должен обновиться, нет?

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

90 дней это как раз крайний срок обновления сертификата. при новом обновлении TTL токена должен обновиться, нет?

Привел же ссылки на официальное репо: DNS manual mode > Please, make sure you understand DNS manual mode > The verification is valid for 30 days

Для лиги лени

На этом этапе acme сделала дополнительную нетривиальную проверку в виде ключа --yes-I-know-dns-manual-mode-enough-go-ahead-please, без которого acme не запускается, но чтобы понять почему надо рыть дебаг. Хотя по факту он просто подтверждает "да, я прочитал мануал".

Там даже написано зачем и почему этот ключ добавили. Это защита от выстрела в ногу для совсем уж упорных.

So many users are using dns manual mode, but they don't really understand the manual mode. I'd like to add a new command parameter, something like:

... --yes-I-know-dns-manual-mode-enough-go-ahead-please ...

Which forces the user to read our wiki and make sure they know they will need to manually renew the cert in 90 days.

...но если вы не верите официальным wiki\man\issue и хотите самостоятельно походить по граблям, ваше право.

Хотя все что требуется это добавить 2 переменные окружения в контейнер и добавить ключ к запуску acme.sh. Пример для рег.ру (там же список поддерживаемых DNS из коробки)

И даже проделав это все вы с вероятностью в 90% получите тыкву. Потому что DNS-ы обновляются не мгновенно. И за дефолтные 300 с. могут тупо не успеть. Чтобы этого избежать необходимо добавить:

acme.sh --dnssleep 3600 ... ...

Обычно, часа хватает, но по фен-шую должно быть 86400 (привет яндекс-днс, который иногда не может синхронизировать свои NSки).

---

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

Да понятно, что вы используете DSM'овский реверс-прокси и замкнули вообще все на железку которая, на минуточку, - attached storage, вместо построения нормальной инфры. (как там тест с ssllabs? HTTP2 завезли? Что по сжатию? Подмену заголовков в обе стороны поддерживает? Ботов\скнеров банит?) Выбор между тем что легко и тем что правильно сделан в сторону легко. И если для дома\soho это еще простительно, то для бизнеса - не надо так, потом будет больно и плохо. Впрочем, вам с этим жить-работать - см. выше про хождение по граблям.

С одной стороны я верю мануалу, с другой оно работало где-то с ноября прошлого года. Понятия не имею почему написано, что не работает, но работало.

Как я и сказал, время покажет. Если окажется, что таки не работает. значит надо будет осваивать написание кастомных DNS API для acme. Тоже польза.

Знаю что есть готовое, но оно не покрывает всех сервисов. Моих там нет, поэтому надо будет писать.

И попробуйте открытые omv\freenas scale (оба - debian) или freenas core (freebsd) вместо synology. Их возможности покрывают 99% "хотелок" большинства пол-лей.

Самосборный nas можно организовать на кит. комплектующих https://xeon-e5450.ru/socket-2011-3/aktualnye-sborki-na-2011-3-sokete/

Али в помощь. Получается недорого и шустро.

Примеры поиска на али:

https://www.aliexpress.com/w/wholesale-kit-x99.html

https://aliexpress.ru/popular/kit-x79.html

P.s. Xeon-ы можно брать с буквой L - они раза в 2 холоднее обычных (но и дороже).

«Недорого» обычно разбивается о десятки человеко-часов чтобы собрать всё воедино. Плюс в сервис не отдашь если что.

Проще купить.

Купить брендовое в 2022 году в России? Грустно...

Когда вы брендовое официально покупаете - вы платите прежде всего за ПОДДЕРЖКУ. Чтобы в любой момент дня и ночи можно было обратиться. Теперь все это далеко. И надолго.

Насчет 100500 человеков-и-часов. У описанных продуктов отличная дока + youtube. Для потыкать в десяток кнопок диплом MIT не нужен.

У truenas вебка вообще на уровне серъезных платных решений.

Остается только развернуть в вирт. машине и попробовать.И не гадать.

Действительно, зачем говорить про какие-то 100500 часов и гадать, ведь можно эти часы потратить и не гадать. Железная логика. :D

отличная дока и youtube

Обычно наличие мануалов не нивелирует человеко-часы. У вас по другому?

Нивелирует отсутствие ТАКОЙ ЖЕ железки в ЗИПах.

Лично неоднократно был свидетелем, когда брендовое железо выходило из строя. При этом будучи ЕДИНСТВЕННЫМ экземпляром.

При этом фраза умников "А че ему будет? Оно же столько бабла стоило" начинает играть иными "красками". Работа встает на дни, а в случае "замкадышей" - на неделю(-и).

Потому как найти по прошествии 5+ лет ТАКУЮ же мат. плату (с распаянным на ней raid-контроллером, ага) достаточно быстро не представляется возможным. Иногда это невозможно вообще.

Так что не надо "песен" про человеко-часы. Эти часы с лихвой окупаются возможностью ОЧЕНЬ БЫСТРО найти замену по железу.

Особенно, когда может сдохнуть тот же БП на вашей хранилке в любой момент (я уверен, что в запасного в наличие у вас нет). Не говоря уже про более сложные варианты.

Ps. Где-то с полгода назад у меня с коллегой из Мск вышел спор по брендовое vs небрендовое в современных реалиях (стоимость, возможность быстрой замены etc). Угадайте, КТО оказался прав после 24.02.2022?

Подсказка: бутылку коньяка выиграл я.

Угадайте, КТО оказался прав после 24.02.2022?

А не напади вы на нас, не доказывали бы вы мне сейчас с пеной у рта, что нет лучше корпоративного железа чем самосборный на коленке китайский Хуанан на старых Ксеонах 10-летней давности и какими-то совершенно нечитаемыми производителями дисков.

Все ж вокруг тупые жертвы маркетинга, кто брендированными решениями пользуются, это ж давно известный факт. :)

Отсутствие доступа к нормальному железу - не повод считать собеседника идиотом.

Что за тон?

Я вам развернуто ответил в чем плюсы самосбора с моей точки зрения. Не хотите - не принимайте это. А хамить не стоит.

P.s. И минусовать втихаря тоже.

регулярно очищают файловую систему от неожиданных юзерскриптов, даже если они лежат в /root

Странное поведение. Но ведь папку с файлами пользователя синоложи автоматически не очищает (это было бы совсем странное поведение для железки, которая должна эти файлы хранить)? Положить скрипт туда и запускать CRON-ом без танцев с бубном.

Признаться, когда пилил это решение, о таком подумал вскользь. Решил не связываться ради упрощения восприятия.

Внутри DSM даже кажущиеся корневыми директории не являются таковыми по умолчанию. Если положить скрипт, например в "корневую" директорию /home, по факту окажется, что это какой-то там /volumeX/home, например. И в случае переноса папки на другой раздел, я просто захожу в настройки директории и переключаю Volume1 на Volume2, например. Под капотом происходит незаметное перемещение, но в GUI отображение не меняется ни на йоту. А вот вызываемый скрипт работать перестанет потому что путей больше не существуют.

В случае подобного системного переноса директории для контейнера acme на другой Volume для моего решения ничего не изменится: Докер это приложение в оболочке и он сам под капотом перепишет пути, при этом для пользователя и для процессов ничего не изменится.

Использую Synology DDNS и DSM7.1
subject: mycoolnas.synology.me
alternative name:*.mycoolnas.synology.me
Без выставления 80го голым задом в интернет и всё работает ещё с DSM6, когда wildcard поддерживался acme, но не synology.
Простите, если что-то понял неправильно.

subject: mycoolnas.synology.me
alternative name:*.mycoolnas.synology.me

Вендор-лок. Вы пользуетесь DDNS от вендора и не знаете проблем. Попробуйте своё, кастомное доменное имя.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории