@Boris007

Что на клиенте создается свою пару ключей для https соединения?

Прочитал статьи про то, как работает криптография, но осталось пару вопросов
Как я понял, чтобы на сервере сделать доступным протокол https, нам нужно на него установить пару ключей, публичный и приватный
После мы можем уже использовать асимметричное шифрование в передаче данных
Но откуда у обычных пользователей появляется эта пара ключей?
Ведь, чтобы обмениваться по RSA нужно между друг другом обменяться публичными ключами

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

Но тут еще появился сессионный ключ о котором я узнал из стаковерфлоу и тут я совсем запутался
Если handshake проходит успешно они обмениваются публичными ключами и на их основе вычисляют сессионный ключ, который вычисляется как sessionKey=sharedKey(PubKeyClient, PrivKeyServer)==sharedKey(PubKeyServer, PrivKeyClient)

https://ru.stackoverflow.com/questions/734459/Где-...

Т.е. асимметричное шифрование может быть использовано только для личного использования, чтобы закодировать сообщения и файлы, если мы решим передавать их по http, то это будет безопасно
Но браузеры устроены так, что им нужен еще какой-то ключ или сертификат, чтобы они одобрили, что мы используем безопасную передачу данных и отобразили нам https?

И почему везде пишут, что SSL устарел и ненадежен, что нужно использовать TSL, хотя во всех примерах для подключения к удаленным ПК через консоль, все примеры через команду SSL
  • Вопрос задан
  • 215 просмотров
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Компьютерные сети
software engineer
Для того, чтобы создать https, на стороне сервера нужен сертификат.
Сертификат содержит внутри пару ключей (приватную, публичную), и некоторые другие поля, например доменное имя сайта для валидации.

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

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

Для каждой новой сессии этот секрет будет генерироваться заново.

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

Либо ты можешь руками установить сертификат в доверенные. Но самоподписанные нужно будет в каждую систему/браузер руками ставить.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Когда ты купил (устнановил себе ОС) в ней уже был браузер и в этом браузере прописаны центры сертификации. Это что-то вроде нотариальных контор. Ты им доверяешь по умолчанию. И они по цепочке являются гарантами сертификатов других доменов или других контор. И связка сет доменов + публичный ключ являются реквизитами сертификата. Ты их можешь увидеть в настройках безопасности браузера. И по протоколам TLS/SSL когда ты заходишь на сайт происходит быстрая проверка что интернет домен подтвержден и между вами устанавливается доверительный канал по которому вся инфа от сервера - прогарантирована. Но еще пока не скрыта. Но ввиду того что ассиметричка работает медленно и дорого, на самом деле эта процедура обрамляет другой протокол - создание симметричного канала с временным сеансовым ключом где дальше ты уже работаешь по обычному быстрому симметричному AES например до следующего сеанса обновления ключа. Этот канал уже скрытый от постороеннего наблюдателя. Если запускать openssl с некоторыми
параметрами то эта процедура рукопожатия будет трассироваться на экран и можно подсмотреть что реально
происходит у тебя на локалхосте.

По поводу что там и где устарело. SSL/TLS это просто версии алгоритмов вот этого рукопожатия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы