Встречается на собеседованиях • сегодня

Что такое Handshake

Handshake (рукопожатие) — процесс установки соединения между клиентом и сервером перед началом безопасной передачи данных. В Java чаще всего встречается в контексте SSL/TLS для HTTPS или защищённых сокетов.

Основные этапы SSL/TLS handshake:

  1. Клиент отправляет ClientHello с поддерживаемыми алгоритмами.
  2. Сервер отвечает ServerHello, выбирая алгоритмы, и отправляет свой сертификат.
  3. Клиент проверяет сертификат, генерирует premaster-secret и шифрует его открытым ключом сервера.
  4. Сервер расшифровывает premaster-secret своим приватным ключом.
  5. Обе стороны генерируют общие сессионные ключи для шифрования.

Пример с SSL-сокетом в Java:

java
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, null, null); // Использует JVM truststore
SSLSocketFactory factory = sslContext.getSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket("example.com", 443);
socket.startHandshake(); // Явный вызов handshake

Handshake критичен для безопасности — если проверка сертификата не пройдёт (например, самоподписанный или просроченный), соединение прервётся с SSLHandshakeException.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы