beldmit: (Программизм)
[personal profile] beldmit
В одной из процедур выпуска сертификатов Let's Encrypt обнаружилась ошибка. Если хостинг позволяет размещение доменов нескольких клиентов на одном IP и позволяет самому клиенту класть сертификаты, то можно было получить сертификат для "соседа" по тому же IP-адресу.

При способе подтверждения TLS-SNI-01 протокола ACME LE выдаёт случайное секретное доменное имя, клиент генерит для него сертификат, LE приходит на указанный IP с использованием SNI и указанием этого имени и проверяет, что сертификат отдаётся с этого IP. После этого выдаётся сертификат на запрошенный клиентом домен.

Функциональность с указанием своих сертификатов есть в стандартной хостинговой панели DirectAdmin, и уже пишут, что у двух крупных хостеров эту операцию можно было провернуть, но вроде бы никто не воспользовался. Протокол TLS-SNI оторвали от греха подальше, а список хостеров собираются составить.

Оригинал новости

Кажется, это первые серьёзные грабли, связанные с LE. При этом на уровне (суб)протокола.

Date: 2018-01-11 10:10 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Вообще интересно, что они имели в виду, предлагая генерировать сертификат на случайное доменное имя.

От какой атаки защищались?

Если проверять, имеет ли клиент возможность задеплоить сертификат на данном домене, то надо ему предложить прописать в сертификат какое-нибудь сильно необязательное поле в сертификат, например pseudonym в Subject-е или какую-нибудь фигню в Subject Alternative Name.

Date: 2018-01-11 11:19 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Ну в общем, я тебя правильно понял.

Но что они хотят этим проверить?

И почему бы это предписанное acme-сервером значение не пихать в какое-нибудь другое поле сертификата, которое не мешает нормальным операциям SNI?

Date: 2018-01-11 01:40 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Ну вот, оказывается мешает. Если ты можешь разместить на IP произвольный сертификат, ты контролируешь вообще говоря хотя бы один из резолвящихся туда доменов. А если их много - то бяда-бяда.

А если бы они пихали свой challenge в отличное от CN поле subject или custom extension, то можно было бы проконтролирвоать что ты именно на том домене, который надо, можешь сертификаты деплоить.

А вообще самый писк был бы пихать challenge в Issuer. Мол, этот сертификат выпущен специальным подразделением (в смысле OU) letsencrypt, предназначенным для тестирования именно этого домена.

И плевать, что никто кроме самого Let's Encrypt не может этот сертификат валидировать - сам-то let's Encrypt может.
Edited Date: 2018-01-11 01:42 pm (UTC)

Date: 2018-01-11 01:50 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Да я тоже "книги не читал, но скажу". Исходя из общих представлений, более менее одинаковых у нас с тобой на тему того как в принципе X509 PKI работает.

Надо вообще почитать что-нибудь еще про ACME. Я сейчас использую acme-tiny, которая умеет свои challenge только по обычному http отдавать. Поэтому приходится держать кучу лишних виртуальных хостов на 80-м порту, единственное назначение которых - отдавать /.well-known/acme-challenge для соответствующего домена. Хотя, возможно стоило бы их в кучу свалить, описать один virtual host с кучей ServerAlias.

Profile

beldmit: (Default)
Dmitry Belyavskiy

May 2025

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 17th, 2025 05:45 am
Powered by Dreamwidth Studios