В чем разница между HTTP и HTTPS?

«В чем разница между HTTP и HTTPS?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP (HyperText Transfer Protocol) — протокол для передачи данных в открытом, незашифрованном виде. Все данные (логины, пароли, cookies) передаются как обычный текст.

HTTPS (HTTP Secure) — это HTTP, работающий поверх криптографических протоколов SSL/TLS. Он обеспечивает:

  1. Шифрование — защищает данные от перехвата и чтения.
  2. Целостность — данные не могут быть изменены при передаче без обнаружения.
  3. Аутентификацию — подтверждает, что вы подключены к настоящему серверу (через SSL-сертификаты).
Технические отличия: Аспект HTTP HTTPS
Порт по умолчанию 80 443
Протокол Прикладной уровень (7) Прикладной уровень + SSL/TLS (между транспортным и прикладным)
URL-схема http:// https://
Сертификат Не требуется Требуется SSL-сертификат от доверенного центра (CA)

Почему HTTPS обязателен сегодня:

  • Защита пользовательских данных.
  • Требование для современных браузерных API (Geolocation, Push-уведомления).
  • Фактор ранжирования в поисковых системах (Google).
  • Предотвращение атак "человек посередине" (MITM).

Пример проверки в Java:

URL url = new URL("https://secure-site.com");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
// Соединение автоматически шифруется. Можно проверить сертификат:
conn.connect();
Certificate[] certs = conn.getServerCertificates();
// Проверка срока действия, издателя и т.д.