2

z-push-contribを使用して IMAP サーバーからメールを取得しています (私も実行しています)。

このimap_openオプション/sslを使用してポート 993 に接続すると、TLS 1.2 が使用されています。

STARTTLS を使用/tlsしてポート 143 に接続すると、TLS 1.0 と別の暗号が使用されます。

SMTP は同じように動作します (STARTTLS は TLS 1.0 のみを使用します)

コマンド ラインから openssl を使用すると、TLS 1.2 が使用されます。

ポート 993 に接続するか、STARTTLS で 143 に接続するかに関係なく、同じ強力な最新の暗号を使用して常に TLS 1.2 接続を取得します。

これは PHP の Openssl 実装のバグですか?

4

1 に答える 1

6

いいえ、PHP ドキュメントで定義されています。

  • /tls : start-TLS を強制的に使用してセッションを暗号化し、それをサポートしていないサーバーへの接続を拒否します
  • /ssl : Secure Socket Layer を使用してセッションを暗号化します

違いは非常に微妙です。基本的に、StatTLS は暗号化されていないポート/接続に接続してから暗号化を要求しますが、TLS/SSL セッションはテキストが送信される前に暗号化されます ( STARTTLSを参照)。通常は異なるポートを使用しますが、メール サーバーが両方のポートで両方をサポートするのが一般的です (したがって、より幅広い範囲のクライアントをサポートします)。

暗号と TLS のバージョンの選択はクライアントとサーバーのネゴシエーションに基づいていますが、STARTTLS は能力の低いクライアントまたはサーバーとして理解される可能性があり、決定のためのパラメーターは異なります。

私の知る限り、STARTTLS 経由で接続する場合、TLS1.1 と TLS1.2 の使用に制限はありませんが、TLS/SSL とは異なる方法で接続します。

疑わしい場合は、より安全なので、TLS / SSLを使用してください:)


アップデート

PHP IMAP 拡張機能は、IMAP プロトコル固有の機能にc-Client ライブラリを利用します。このライブラリはやや時代遅れ (2007 年) であり、openssl の呼び出しとは異なる方法で STARTTLS コマンドを処理する可能性があります。これが、使用される暗号化/暗号の違いの理由です。

于 2016-02-02T20:14:58.653 に答える