Зачем в HTTPS городить огород с какими-то подписями, цифровыми сертификатами, и прочим. Почему нельзя по обычному HTTP провести генерацию ключа по Диффи-Хеллману, и после шифровать всё этим ключом?
Чтобы удостовериться, что свою долю ключа сгенерировал именно сервер, а не человек посередине, который для клиента может притвориться сервером, а для сервера - клиентом, и слушать между ними трафик.
Filipp42, у Let's Encrypt сертификаты бесплатные какбэ. А подтвердить очень просто - сертификаты подписываются стороной, к которой у браузера есть доверие, эта сторона не просто слепо подписывает, а сначала проверяет, что получающая их сторона действительно владеет доменом, на который выдаётся сертификат. Ну и сертификат не работает без соответствующего ему закрытого ключа (известного только серверу), потому просто скопировать чужой сертификат и выдать за свой не выйдет - ничего не получится им подписать.
Filipp42, есть бесплатные сертификаты, и вообще можно выдать самоподписанный и дать пользователю скачать корневой (rootCA), который он должен поместить у себя на системе в доверенные корневые - всё, сайт будет у него работать по https.
infinityfreenom, Это репутационный вопрос. Корневые сертификаты каких попало организаций в состав браузеров и операционных систем не включают. При наличии репутационных потерь вылететь из пакета доверия можно за 6 секунд.
Армянское Радио, я выдам самоподписанный и помещу корень на системе своей в корневые доверенные центры и что дальше?
Это развод на бабки, какие потери? Хотите проверить? Ну я Вам дам файл корня, Вы установите его у себя на системе в корневые доверенные центры и всё - шарашкины конторы не нужны больше.
infinityfreenom, и что, вы будете лично передавать каждому клиенту своего сервиса корневой сертификат? А если у вас сервис размером с Booking.com? А размером с Facebook?
infinityfreenom, Со своими личными доменами и сайтами ты можешь делать все что угодно. Как уже сказали выше, сертификат нужен для проверки ресурса к которому ты подключаешься. Если у сайта есть сертификат, значит сайт прошел минимальную проверку подлинности и твое устройство будет доверять этому сайту.
Есть разные сертификаты по уровню доверия.
DV - domain validate, при выдачи сертификата проверяется что домен принадлежит пользователю.
OV - organization validate, проверяется организации, необходимо отправить документы в центр сертификации, они проверят твою организацию и только потом ты сможешь получить сертификат. Такие сертификаты обычно юзают банки и похожие организации. По адресной строке можно явно увидеть разницу в сертификате.
Давай на примере:
Есть банк с онлайн кабинетом для клиентов, логично что подключении к онлайн кабинету должно быть по защищенной линии, что бы третья сторона не могла перехватить логин и пароль, с этим понятно, тут сертификат не нужен, достаточно обменяться ключами для шифрования. Но как клиент банка должен проверить что он действительно зашел на сайт своего банка? Ведь злоумышленник может создать похожую страницу (фишинг) и выполнить атаку типа MIT, подсунуть клиенту свою страницу под доменным именем банка. Вот тут и облом, хакер не может получить сертификат для домена банка, соответственно браузер при подключении к фишинговой странице начнет ругатся на кривой сертификат и это уже первый звонок, что тебя хотят обмануть.
А почему нет???!!! Почему кто-то должен выдавать сертификаты, но не я сам себе бесплатно хоть на 100 лет?
Потому что икру кто-то хочет ложками жрать?
А кто тебе запрещает делать свои сертификаты бесплатно и пользоваться ими хоть 100 лет?
Но вот кто ты за хрен с горы, и почему я или кто-то еще должен доверять твоим сертификатам - это вопрос.
Поэтому для своего сайта, если на него ходишь только ты - можешь смело делать свой сертификат.
А для сайта, на который могу заходить пользователи, которым ты не можешь установить свой сертификат - либо бери бесплатный letsencrypt либо заплати.
infinityfreenom, ну вот если совсем уж вдаваться, то для шифрования сертификат тоже используется. им(точнее публичной частью ключевой пары из него) шифруются сессионные ключи.
Но идентификация всё же первична
vreitech, почему же не доверять корневому сертификату, выпущенному infinityfreenom для его собственного, а не чужого ресурса? Вероятно, не доверяю не «тебе», а посреднику, через которого он будет получен.
MaxKozlov, сертификаты уже не используются для шифрования, а только для подписи своей доли эфемерного ключа. Алгоритмы, которые использовали для шифрования закрытый ключ сертификата, упразднены в современных версиях TLS, т.к. они не обеспечивали Perfect Forward Secrecy.
почему же не доверять корневому сертификату, выпущенному infinityfreenom для его собственного, а не чужого ресурса?
Если самоподписанный его сертификат записать себе в корневые, то он своим сертификатом сможет подписать ещё что-нибудь и вы будете этому автоматически доверять... А вдруг это что-то нехорошее ?