SSL (Secure Sockets Layer) — это криптографический протокол, обеспечивающий безопасную передачу данных между клиентом (браузером) и сервером.
Его основные функции:
- Шифрование: Защита передаваемой информации от перехвата и прочтения третьими лицами.
- Аутентификация: Проверка подлинности сервера для клиента.
- Целостность данных: Гарантия того, что данные не были изменены в процессе передачи.
Работа SSL основана на использовании пар ключей (публичный и приватный) и цифровых сертификатов, выданных удостоверяющими центрами (Certificate Authorities, CA).
Этапы установки SSL-соединения (TLS Handshake):
- Client Hello: Клиент отправляет серверу поддерживаемые версии протокола SSL/TLS, наборы шифров и случайное число.
- Server Hello: Сервер выбирает наиболее подходящие параметры из предложенных клиентом, отправляет свое случайное число и свой SSL-сертификат.
- Сертификат сервера: Клиент проверяет подлинность сертификата сервера (срок действия, доверие CA и т.д.).
- Client Key Exchange: Клиент генерирует симметричный ключ для сессии, шифрует его открытым ключом сервера и отправляет на сервер.
- Change Cipher Spec: Клиент и сервер сообщают друг другу, что начинают использовать установленный симметричный ключ для шифрования дальнейшего трафика.
- Finished: Стороны отправляют зашифрованные сообщения о завершении установки соединения.
После успешного хэндшейка весь трафик между клиентом и сервером шифруется с помощью установленного симметричного ключа, обеспечивая конфиденциальность и целостность передаваемой информации.
Современным стандартом является TLS (Transport Layer Security), который является преемником SSL. Хотя термин "SSL" часто используется по привычке, в настоящее время используются версии TLS (1.0, 1.1, 1.2, 1.3).