Здравствуйте!Возникла необходимость добавить верифицируемый (публичного доверенного ЦС) SSL сертификат на postfix.
Решил без особый вложений использовать LetsEncrypt. Все что нужно - так это подтвердить владение зоной. Обычно это делается через http uri.
И все бы ничего, но у меня нет на хосте с postfix-ом web-сервера, и ставить его туда не собираюсь.
Благо есть альтернативный способ подтвердить владение через DNS, но тут снова проблема, DNS тоже не на хосте с postfix-ом.
Поначалу начал заморачиваться с запуском скриптов через ssh, но потом подумал, а наверное есть способ а-ля rndc addzone?! Но не нашел.
Плохо искал или таки нет?nsupdate не подходит, поскольку зона не динамическая.
Есть ли другие варианты, или остается только ssh?
> Решил без особый вложений использовать LetsEncrypt. Все что нужно - так это
> подтвердить владение зоной. Обычно это делается через http uri.
> И все бы ничего, но у меня нет на хосте с postfix-ом
> web-сервера, и ставить его туда не собираюсь.В принципе, web-сервером может быть всё что угодно, хоть nc. Моя персональная симпатия уходит к xinetd. Смотрите примеры https://unix.stackexchange.com/questions/32182/simple-comman...
> Благо есть альтернативный способ подтвердить владение через DNS, но тут снова проблема,
> DNS тоже не на хосте с postfix-ом.
> Поначалу начал заморачиваться с запуском скриптов через ssh, но потом подумал, а
> наверное есть способ а-ля rndc addzone?! Но не нашел.
> Плохо искал или таки нет?
> nsupdate не подходит, поскольку зона не динамическая.Можно оставить в покое вашу зону example.com, но завести на том-же хосте отдельную зону _acme-challenge.example.com и её сделать динамической.
Или пусть зона _acme-challenge.example.com будет slave, чтобы её обновлял master который живёт там-же где и Postfix, а с локальным непубличным Bind-ом вы без SSH справитесь.
Вам же важно, чтобы обновлялка сертификатов не могла лазать куда не надо?
> В принципе, web-сервером может быть всё что угодно, хоть nc. Моя персональная
> симпатия уходит к xinetd. Смотрите примеры https://unix.stackexchange.com/questions/32182/simple-comman...Дело не в том что сложно ставить, или трудно с выбором что ставить. Дело в том, что на хосте политикой не предусмотрено открытие других портов. Тем более что в этом нет никакой другой необходимости, кроме той что так проще и так делают все.
> Можно оставить в покое вашу зону example.com, но завести на том-же хосте
> отдельную зону _acme-challenge.example.com и её сделать динамической.
> Или пусть зона _acme-challenge.example.com будет slave, чтобы её обновлял master который
> живёт там-же где и Postfix, а с локальным непубличным Bind-ом вы
> без SSH справитесь.
> Вам же важно, чтобы обновлялка сертификатов не могла лазать куда не надо?Да, безусловно. Обновлялка не должна никуда лазить. Для этого на хосте с BIND-ом ограниченный шел, пути, скрипты, судо и прочие ограничения, что не очень удобно.
Про динамическую зону тоже думал, но как-то в другом ключе. Благодарю, Ваш вариант вполне себе рабочий. Пожалуй на нем остановлюсь.
>> Вам же важно, чтобы обновлялка сертификатов не могла лазать куда не надо?
> Да, безусловно. Обновлялка не должна никуда лазить. Для этого на хосте с
> BIND-ом ограниченный шел, пути, скрипты, судо и прочие ограничения, что не
> очень удобно.IMXO, вообще ей нечего делать на хосте с BIND-ом. Я имел в виду, не давать ей прав модифицировать зону example.com, а только _acme-challenge.example.com.
>> Можно оставить в покое вашу зону example.com, но завести на том-же хосте
>> отдельную зону _acme-challenge.example.com и её сделать динамической.
>> Или пусть зона _acme-challenge.example.com будет slave, чтобы её обновлял master который
>> живёт там-же где и Postfix, а с локальным непубличным Bind-ом вы
>> без SSH справитесь.
> Про динамическую зону тоже думал, но как-то в другом ключе. Благодарю, Ваш
> вариант вполне себе рабочий. Пожалуй на нем остановлюсь.Змечательно. Имейте в виду:
- Если зона _acme-challenge.example.com живёт хосте с Postfix-ом, то её будет технически проще курочить из обновлялки, но будут сложности если кому-то кроме Postfix-а потребуются сертификаты Let's Encrypt.
- Если зона _acme-challenge.example.com живёт хосте с BIND-ом, то придётся повозиться с её динамическим обновлением с Postfix-а, по nsupdate или обёрткой вокруг SSH, но решение будет масштабируемо на большее количесво сервисов с Let's Encrypt на домене example.com.
> IMXO, вообще ей нечего делать на хосте с BIND-ом. Я имел в
> виду, не давать ей прав модифицировать зону example.com, а только _acme-challenge.example.com.И я это имел в виду. Делать только то, под что заточен скрипт в каталоге ~/bin на стороне BIND-а, запускаемый acmetool-ом на стороне postfix-а, при обработке соответствующего хука - challenge-dns-start или challenge-dns-stop.
И поскольку шел и судо на стороне BIND-а ограничены, то ничего более под этой учеткой, авторизуемой по ключу, сделать не получится.> Змечательно. Имейте в виду:
> - Если зона _acme-challenge.example.com живёт хосте с Postfix-ом, то её будет технически
> проще курочить из обновлялки, но будут сложности если кому-то кроме Postfix-а
> потребуются сертификаты Let's Encrypt.
> - Если зона _acme-challenge.example.com живёт хосте с BIND-ом, то придётся повозиться с
> её динамическим обновлением с Postfix-а, по nsupdate или обёрткой вокруг SSH,
> но решение будет масштабируемо на большее количесво сервисов с Let's Encrypt
> на домене example.com.Предпочтительней безусловно второй вариант. Но!
Как оказалось, хостинг-панель plesk не дает (штатно) сделать зону (никакую) динамической. Только мастер/слейв.
Попробую поискать или как сделать динамическую зону, или еще вариант.
Шел мне не нравится массой условностей. Потом что-то где-то забудешь, и будет дыра.
Мастер/слейв оставлю как запасной вариант.
>[оверквотинг удален]
> подтвердить владение зоной. Обычно это делается через http uri.
> И все бы ничего, но у меня нет на хосте с postfix-ом
> web-сервера, и ставить его туда не собираюсь.
> Благо есть альтернативный способ подтвердить владение через DNS, но тут снова проблема,
> DNS тоже не на хосте с postfix-ом.
> Поначалу начал заморачиваться с запуском скриптов через ssh, но потом подумал, а
> наверное есть способ а-ля rndc addzone?! Но не нашел.
> Плохо искал или таки нет?
> nsupdate не подходит, поскольку зона не динамическая.
> Есть ли другие варианты, или остается только ssh?У letsencrypt свой сервер, лишь бы порт 80 (возможно и 443) не заняты были во время получения сертификата....
> И все бы ничего, но у меня нет на хосте с postfix-ом
> web-сервера, и ставить его туда не собираюсь.Вам шашечки или ехать?
Ну стойте, ждите шашечек...
Я поражаюсь, насколько люди стремятся создавать себе проблемы на ровном месте и хотят чувствовать себя героями, решая их.
Не хочешь ставить веб-сервер - купи платный сертификат, это дешевле чем потраченное время.
Но поставить веб-сервер - еще дешевле.
>> И все бы ничего, но у меня нет на хосте с postfix-ом
>> web-сервера, и ставить его туда не собираюсь.
> Вам шашечки или ехать?
> Ну стойте, ждите шашечек...
> Я поражаюсь, насколько люди стремятся создавать себе проблемы на ровном месте и
> хотят чувствовать себя героями, решая их.
> Не хочешь ставить веб-сервер - купи платный сертификат, это дешевле чем потраченное
> время.
> Но поставить веб-сервер - еще дешевле.ты чё раскудахтался?
человек абсолютно прав в своих желаниях,
я тебе больше скажу для wildcard сертификатов (*.domain.tld) единственная форма верификации - через днси да существуют методы позволяющие это дело автоматизировать на голом bind,
описывать я их не буду,в гугле есть стопка примеров, ОП - ленивая жопа или не умеет гуглить
>> И все бы ничего, но у меня нет на хосте с postfix-ом
>> web-сервера, и ставить его туда не собираюсь.
> Вам шашечки или ехать?
> Ну стойте, ждите шашечек...
> Я поражаюсь, насколько люди стремятся создавать себе проблемы на ровном месте и
> хотят чувствовать себя героями, решая их.
> Не хочешь ставить веб-сервер - купи платный сертификат, это дешевле чем потраченное
> время.
> Но поставить веб-сервер - еще дешевле.Что Вы так возбудились!
Я найду рабочее решение удовлетворяющее моим требованиям, а не по принципу "как нибудь".