2016-02-02 5 views
0

Я использую z-push-contrib для получения электронной почты с сервера IMAP (также меня управляет).IMAP через PHP:/ssl и/tls выбрать другую версию TLS

Если я использую 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 с использованием того же сильного современного шифра.

Является ли это ошибкой в ​​реализации Openssl PHP?

+0

Откуда вы знаете, какая версия используется? Вы сделали захват пакетов, чтобы посмотреть на ClientHello или вы проверили полученный протокол после рукопожатия? В последнем случае это может быть просто сервер, который настроен только для TLS 1.0. –

+0

Я проверил журналы сервера и заголовки электронной почты. Как я писал, если я подключаюсь напрямую через Openssl, TLV1.2 используется, как ожидалось. Сервер настроен на использование TLS1, TLS1.1 и TLS1.2 – basbebe

+0

Так как это тот же OpenSSL на стороне клиента для всех тестов, это должно быть либо приложение, использующее его, которое ограничивает версию протокола или сервер. Это не ошибка в самой OpenSSL.Является ли этот сервер общедоступным, чтобы можно было запустить некоторые тесты? –

ответ

2

Нет, это определено в PHP documentation:

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

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

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

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

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


Update

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

+0

Возможно, я не понял этого, но с помощью openssl это не имеет значения, если я использую SSL-порт, например 993, или использую порт 143 и использую STARTTLS. Оба раза используется одна и та же версия TLS и один и тот же шифр. Вот как это должно работать, и нет смысла использовать более слабый шифр или версию TLS при использовании STARTTLS. – basbebe

+0

STARTTLS также не предназначен для «менее способных клиентов», но, как полагали, не учитывает необходимость конкретных SSL-портов и, следовательно, является улучшением. http://wiki.dovecot.org/SSL Это (я полагаю), либо плохое поведение в реализации OpenSl PHP или IMAP, либо в Z-Push – basbebe

+0

Не может быть уверен, что это было первым, STARTTLS (1999, см. [RFC] ] (https://tools.ietf.org/html/rfc2595)) или резервирование порта 993 для протокола IMAP через SSL. –

Смежные вопросы