Что такое SSL/TLS и для чего он используется?

«Что такое SSL/TLS и для чего он используется?» — вопрос из категории Тестирование безопасности, который задают на 22% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SSL (Secure Sockets Layer) и его преемник TLS (Transport Layer Security) — это криптографические протоколы, обеспечивающие безопасную передачу данных по сети.

Основные цели:

  1. Шифрование (Конфиденциальность): Защита данных от перехвата.
  2. Аутентификация (Проверка подлинности): Гарантия, что клиент общается с настоящим сервером (через SSL-сертификаты).
  3. Целостность данных: Гарантия, что данные не были изменены при передаче.

Как это работает (упрощенно):

  1. «Рукопожатие» (Handshake): Клиент и сервер договариваются о параметрах шифрования, сервер предъявляет сертификат.
  2. Проверка сертификата: Клиент проверяет сертификат на валидность и доверие к центру сертификации (CA).
  3. Обмен ключами: Создается общий сеансовый ключ для симметричного шифрования.
  4. Безопасная передача: Данные шифруются и передаются.

Практическая проверка (Python с requests):

import requests

# Попытка запроса с проверкой сертификата (по умолчанию verify=True)
try:
    response = requests.get('https://example.com')
    print(f'Успех. Статус: {response.status_code}. Сертификат валиден.')
except requests.exceptions.SSLError as e:
    print(f'Ошибка SSL: {e}')  # Например, самоподписанный или просроченный сертификат

Важно: Термин «SSL» исторически устоялся, но современные системы используют преимущественно TLS (версии 1.2, 1.3). Без него протокол HTTP уязвим для атак «человек посередине» (MitM).