У меня есть несколько вопросов после прочтения статей о криптографии. Для начала, чтобы установить протокол HTTPS на сервере, понадобится установить пару ключей - публичный и приватный. Но откуда обычным пользователям берутся эти ключи? Мне кажется, что для обмена по протоколу RSA необходимо обменяться публичными ключами. Также, я заметил, что в процессе настройки HTTPS требуется использование сертификатов, полученных от доверенного домена. Появляется также сессионный ключ, который сложно понять - я прочитал об этом на Stack Overflow. Все это меня запутало. Я также вижу, что для использования безопасного соединения HTTPS браузеру нужен еще один ключ или сертификат. И все же, почему говорят, что SSL устарел и ненадежен, а нужно использовать TLS? Почему же все примеры подключения к удаленным ПК через консоль используют команду SSL?
На клиентской стороне ключи для установки защищенного HTTPS-соединения не генерируются. Ключи генерируются и устанавливаются на сервере. Для установки HTTPS-соединения основными ключами, которые используются, являются приватный ключ и публичный ключ. Приватный ключ хранится на сервере и используется для расшифровки зашифрованных сообщений, полученных от клиента. Этот ключ должен быть надежно защищен и не доступен обычным пользователям. Публичный ключ является частью сертификата сервера, который подтверждает подлинность сервера и используется для шифрования данных, отправляемых клиенту. Публичный ключ сервера обычно получается путем включения сертификата, выданного доверенным удостоверяющим центром (Certificate Authority, CA), веб-сервером. Доверенные удостоверяющие центры выпускают сертификаты, чтобы подтвердить подлинность идентификации сервера. Браузер использует список доверенных удостоверяющих центров, чтобы убедиться, что сервер является доверенным. Если сертификат сервера был подписан доверенным удостоверяющим центром, браузер доверяет серверу и устанавливает защищенное соединение. Сессионный ключ - это временный ключ, который генерируется на сервере и используется для шифрования данных, передаваемых между клиентом и сервером на протяжении сеанса соединения. Каждый сеанс создает новый сессионный ключ, чтобы обеспечить безопасность данных. Относительно SSL и TLS, SSL (Secure Sockets Layer) был разработан раньше и является предшественником TLS (Transport Layer Security). SSL версии 2 и 3 были подвержены серьезным уязвимостям и атакам, поэтому рекомендуется использовать более безопасный TLS. Большинство современных браузеров и веб-серверов поддерживают TLS.
Когда вы устанавливаете операционную систему на свой компьютер, в ней уже есть предустановленный веб-браузер с заранее заданными центрами сертификации. Эти центры сертификации являются некими нотариальными органами, которым вы по умолчанию доверяете. Они гарантируют подлинность сертификатов для разных доменов и организаций по цепочке доверия. Информацию о цепочке доверия и публичном ключе можно найти в настройках безопасности вашего браузера. При использовании протоколов TLS/SSL, когда вы заходите на сайт, происходит быстрая проверка подлинности домена, а также устанавливается надежный канал связи между вами и сервером, который гарантирует конфиденциальность передаваемой информации. Однако, чтобы ускорить процесс, используется асимметричное шифрование с временным сеансовым ключом, а затем данные передаются по симметричному алгоритму шифрования, например, AES, до момента обновления ключа в следующий сеанс. Этот защищенный канал уже скрыт от посторонних наблюдателей. Если вы запустите OpenSSL с определенными параметрами, можно увидеть на экране процесс этого рукопожатия и проследить, что происходит на вашем компьютере. Касательно устаревших версий SSL/TLS, они просто означают, что используются устаревшие версии алгоритмов для этого рукопожатия.