HTTPS (Hypertext Transfer Protocol Secure) — это расширение протокола HTTP, обеспечивающее защищенную передачу данных между клиентом (браузером) и сервером.
Основные отличия и принципы работы HTTP:
- Шифрование: Использует протоколы SSL/TLS для шифрования данных, защищая их от перехвата и изменения.
- Целостность: Гарантирует, что данные, отправленные клиентом, придут на сервер без изменений.
- Аутентификация: Позволяет клиенту проверить подлинность сервера, убедившись, что он взаимодействует с нужным ресурсом.
Этапы установки защищенного соединения:
- Client Hello: Клиент отправляет серверу список поддерживаемых версий SSL/TLS, алгоритмов шифрования и другие параметры.
- Server Hello: Сервер выбирает из предложенных клиентом параметров наиболее подходящие и отправляет их обратно, а также свой сертификат.
- Certificate Verify: Клиент проверяет сертификат сервера (подлинность, срок действия, цепочку доверия).
- Client Key Exchange: Клиент генерирует секретный ключ сессии, шифрует его открытым ключом сервера (из сертификата) и отправляет серверу.
- Server Change Cipher Spec, Finished: Сервер расшифровывает секретный ключ, запускает сессионное шифрование и подтверждает готовность к обмену зашифрованными данными.
- Client Change Cipher Spec, Finished: Клиент аналогично запускает сессионное шифрование и подтверждает готовность.
- Защищенный обмен данными: Дальнейший обмен данными происходит с использованием симметричного шифрования на основе секретного ключа сессии.
HTTPS обязателен для сайтов, работающих с конфиденциальной информацией (логины, пароли, банковские данные) и является важным фактором для SEO. При тестировании HTTPS важно проверять:
- Действительность и корректность SSL-сертификата.
- Поддержку современных версий TLS.
- Наличие уязвимостей (например, Heartbleed, POODLE).
- Правильность редиректов с HTTP на HTTPS.
- Смешанный контент (когда на HTTPS-странице загружаются ресурсы по HTTP).
Для тестирования используются инструменты: Postman, curl, OpenSSL, браузерные инструменты разработчика.
bash
python