IMAP через PHP: / ssl и / tls выбирают другую версию TLS

я использую Z-Push-вно получать электронные письма с IMAP-сервера (и мной тоже).

Если я использую imap_open вариант /ssl и соединитесь с портом 993, TLS 1.2 используется.

Если я использую /tls и подключиться к порту 143, используя STARTTLS, TLS 1.0, и используется другой шифр.

SMTP ведет себя одинаково (STARTTLS использует только TLS 1.0)

Если я использую openssl из командной строки, TLS 1.2 используется:

Не имеет значения, подключаюсь ли я к порту 993 или к 143 с помощью STARTTLS, я всегда получаю соединение TLS 1.2 с использованием одного и того же надежного, современного шифра.

Это ошибка в реализации PHP Openssl?

0

Решение

Нет, это определено на PHP документация:

  • / TLS: принудительное использование start-TLS для шифрования сеанса и отклонение соединения с серверами, которые его не поддерживают
  • / SSL: используйте Secure Socket Layer для шифрования сеанса

Разница очень тонкая. В основном StatTLS подключается к незашифрованному порту / соединению, а затем запрашивает шифрование, в то время как сеансы TLS / SSL шифруются перед передачей любого текста (см. STARTTLS). Обычно они используют разные порты, но почтовые серверы обычно поддерживают оба порта (поэтому они поддерживают более широкий круг клиентов).

Выбор версии шифра и TLS основан на согласовании клиент-сервер, но STARTTLS можно понимать как менее способного клиента или сервера, тогда параметры для принятия решения отличаются.

AFAIK, нет ограничений на использование TLS1.1 и TLS1.2 при соединении через STARTTLS, но они соединяются не так, как TLS / SSL.

В случае сомнений используйте TLS / SSL, так как это более безопасно 🙂


Обновить

Расширение PHP IMAP использует библиотека c-Client для функций протокола IMAP. Эта библиотека несколько устарела (2007 г.) — и, вероятно, обрабатывает команды STARTTLS не так, как вызов openssl, — поэтому есть разница в используемом шифровании / шифрах.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]