vitus_wagner: My photo 2005 (Default)
Тут вот [personal profile] nataraj рассказывает о своем опыте приобретения коммерческих сертификатов для https сайтов.

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

Поэтому я использую letsencrypt. В качестве клиента я использую acme-tiny, которую обвязал своими скриптами с тем, чтобы процесс был полностью автоматизирован и сертификаты перевыпускались автоматически.

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

Второй - от специального непривилегированного юзера и выполняет собственно взаимодействие с letsencrypt.
Можно было бы в контейнер какой засунутЬ, но я счел это лишним. acme-tiny я доверяю, потому что я ее читал. (там всего 200 строк на питоне).

Третий - опять от рута, его задача ввести в эксплуатацию выпущенные сертификаты, т.е. перезаписать приватные ключи и сертификаты в тех файлах, на которые указывает конфигурация различных сервисов и перезапустить эти сервисы.

Скрипты можно посмотреть здесь.
vitus_wagner: My photo 2005 (Default)
Продолжаю разбираться с letsencrypt. Понятно что это гадость. вроде systemd, но деваться некуда. Все альтернативные бесплатые CA за этот год были успешно уничтожены.

Обнаружил, что автор acme-tiny рекомендует по крону повторно выписывать сертификат на тот же самый ключ.

По-моему, в этом вопросе он глубоко неправ. Плтому что с точки зрения пользователя сайта смена сертификата и смена ключа полностью эквивалентны. Браузер не смотрит на ключ, браузер смотрит на то, что ключ соответствует указанному в сертификате.

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

Правда, как обычно, идея перегенерации ключа по крону несет свои собственные риски.
В текущем виде acme-tiny требует доступа только к ключу аккаунта на letsencrypt и к CSR. То есть скрипт, активно работающий с сетью и теоретически могущий быть проэксплойченным через дырки в стандартной библиотеке питона, самом питоне и libc, не имеет доступа к вашему закрытому ключу.

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

То есть нужно аккуратно поделить задачу на три части

1. Сгенерировать новый закрытый ключ и CSR. В принципе, для этого никаких прав не нужно. Нужно только не пересекаться по правам с шагом 2, чтобы у того доступа к закрытому ключу не было. С другой стороны, поскольку эта операция ничего особо принципиального не делает, только пишет в файлики в формате pem, то не жалко и от рута запускать.

2. Посредством acme-tiny или еще какого auditable клиента к letsencrypt получить сертификат.

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

Обдумывал мысль, как бы запихнуть операцию 2 в chroot но решил что для acme-tiny это явно не вариант - в chroot придется тащить всю питоновскую инфраструктуру. Пожалуй, с dehydrated это бы лучше получилось.

Идея, естественно в том, чтобы создавать дерево с бинарниками для chroot непосредственно перед запуском скрипта, копируя бинарники из основной системы, а потом уничтожать, откопировав оттуда только полученный сертификат.
vitus_wagner: My photo 2005 (Default)
Год назад я написал про сертификаты от WoSign, что-де это не сертификат, а китайская подделка.
Оказалось, что в каждой шутке есть доля шутки и в этой она очень небольшая.

Mozilla тут собирается перестать доверять WoSign-овским сертификатам.

А тут еще выясняется, что WoSign скупил StartCom, и, следовательно, startssl.com тоже накрывается.

Соответственно, единственным провайдером free ssl certificates становится letsecncrypt, который, на мой взгляд, куда дырявее WoSign и startssl. Но ему почему-то мозилла доверяет.

Есть, конечно, еще cacert.org, но тут мозилла сказала много мата про сертифкат его собственного сайта, хотя я так и не смог понять что там не так с signature algorithm - RSA 4096+sha256.

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

Большинство коммерческих CA хотят за Class 1 сертификат каких-то совершенно немерянных денег, от 70 до 150 долларов в год.

Я пока нашел только sslmate у которого стоимость сертификата сопоставима со стоимость регистрации домена. Правда, тут, как и у letsecrypt предлагается устанавливать на свой сервер специальный софт, для работы с сервером CA. Но, в отличие от letsencrypt беглый взгляд на список зависимостей и на сам скрипт матерных слов у меня не вызвал.

Может кто еще какой сервис подскажет - чтобы бесплатно или меньше 20 долларов в год на домен и из коробки работало во всех распространенных браузерах (необходимость установки intermediate CA сертификата на сервер - допустима. У startssl.com он есть, и ничего, год уже живу).
vitus_wagner: My photo 2005 (Default)
Полгода назад я написат ругательный пост про LetsEncrypt. С общим смыслом "С изделием людей, которые так пишут, нельзя иметь дело там, где это касается безопасности".

Как показала практика, не только с изделием, но и с сервисами нельзя иметь дело.

Ибо вот.

Для того, чтобы написать софт для рассылок, который помещает явным образом в письмо адреса всех получателей, надо обладать знаниями о функционировании электронной почты на уровне типичной секретарши.
vitus_wagner: My photo 2005 (Default)
Если безопасность вашего сервера дорога вам, НИКОГДА И НИ ЗА ЧТО НЕ ПЫТАЙТЕСЬ ПОЛУЧАТЬ СЕРТИФИКАТЫ letsencrypt.

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


Они ухитрились написать хрень для генерации запросов на сертификат так, что она пытается установить такие пакеты как

libpython2.7-dev libssl-dev libffi-dev.

Более того, они ухитрились сделать так, что оно начинает ставить эти пакеты не
спросив, а хочу ли я их у себя в системе видеть.

В то время как любой -dev паккет на production-сервере это дыра.

Лучше пускать пользователей с basic authentication по незащищенному http, чем пускать код от letsencrypt.org выполняться на вашей системе.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

March 2026

S M T W T F S
1 2 34567
8 910 11121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 12th, 2026 05:08 am
Powered by Dreamwidth Studios