38

設定しているJavaクライアントとサーバーの間にSSLまたはTLS接続を確立しようとしています。

私はSSLContext.getInstance("SSL")を構築するために使用してきましたSSLContext、そしてそれはうまくいきました。

protocolパラメータの目的が何であるか知りたいのですがSSLContext.getInstance(String protocol)

特に、SSLContext.getInstance("SSL")SSLContext.getInstance("TLS")、または他の可能な値を使用することの間で何が変わりますか?

4

2 に答える 2

34

これは、SSLとTLSの違いについて説明した、かなり詳細な回答です。つまり、TLS は SSL の後継であり、TLS 1.0 は「SSL 3.1」と見なすことができます。

JSSE リファレンス ガイドの SSLContext セクションを見ると、次のように書かれています。

これらの静的メソッドはそれぞれ、少なくとも要求されたセキュア ソケット プロトコルを実装するインスタンスを返します。返されたインスタンスは、他のプロトコルも実装する場合があります。たとえば、getInstance("TLSv1") は、"TLSv1"、"TLSv1.1"、および "TLSv1.2" を実装するインスタンスを返す場合があります。

これは、標準名ドキュメントにも記載されています。

特に、 SSLContextImplの Oracle/OpenJDK 7 ソース コードを確認すると、そのすべてSSLContextの がすべてのプロトコルをサポートしていることがわかります (SSLv2 Client Hello を使用する SSLv3 から TLS 1.2 まで)。異なるのは、デフォルトで有効になっているプロトコルです。さらに、他の Java 実装 (IBM JRE など) は異なる動作をする可能性があるため、一般的にこれに依存するべきではありません。

特定のプロトコル セットを接続に使用する場合は、SSLSocketまたはSSLEnginesetEnabledProtocolsメソッドを使用する必要があります。それ以外の場合は、プロバイダーのドキュメントで説明されているように、デフォルト値が使用されます。

于 2012-10-30T12:02:00.143 に答える
1

プロトコルは、サーバーとクライアント間の通信に使用されます。したがってSSLContext(String protocol)、プロトコルのインスタンスを返し、そのサーバーまたはクライアントを使用して、セキュリティ レベルのために相互に通信します。

詳細については、このリンクを参照してください。 http://www.herongyang.com/JDK/SSL-java-net-ssl-SSLContext-Class-Test.html

于 2012-10-30T09:23:31.437 に答える