я использую 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?
Нет, это определено на PHP документация:
Разница очень тонкая. В основном StatTLS подключается к незашифрованному порту / соединению, а затем запрашивает шифрование, в то время как сеансы TLS / SSL шифруются перед передачей любого текста (см. STARTTLS). Обычно они используют разные порты, но почтовые серверы обычно поддерживают оба порта (поэтому они поддерживают более широкий круг клиентов).
Выбор версии шифра и TLS основан на согласовании клиент-сервер, но STARTTLS можно понимать как менее способного клиента или сервера, тогда параметры для принятия решения отличаются.
AFAIK, нет ограничений на использование TLS1.1 и TLS1.2 при соединении через STARTTLS, но они соединяются не так, как TLS / SSL.
В случае сомнений используйте TLS / SSL, так как это более безопасно 🙂
Обновить
Расширение PHP IMAP использует библиотека c-Client для функций протокола IMAP. Эта библиотека несколько устарела (2007 г.) — и, вероятно, обрабатывает команды STARTTLS не так, как вызов openssl, — поэтому есть разница в используемом шифровании / шифрах.
Других решений пока нет …