public class SSLParameters extends Object
SSLParametersは、このクラスのコンストラクタを使用して作成することができます。 オブジェクトは、SSLSocket
、SSLServerSocket
、およびSSLEngine
のgetSSLParameters()
メソッド、またはSSLContext
のgetDefaultSSLParameters()
メソッドとgetSupportedSSLParameters()
メソッドを使用して取得することもできます。
SSLParametersは、SSLSocket.setSSLParameters()
、SSLServerSocket.setSSLParameters()
、およびSSLEngine.setSSLParameters()
メソッドを使用して接続に適用できます。
たとえば:
*SSLParameters p = sslSocket.getSSLParameters(); p.setProtocols(new String[] { "TLSv1.2" }); p.setCipherSuites( new String[] { "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", ... }); p.setApplicationProtocols(new String[] {"h2", "http/1.1"}); sslSocket.setSSLParameters(p);
SSLSocket
, SSLEngine
, SSLContext
コンストラクタ | 説明 |
---|---|
SSLParameters() |
SSLParametersを構築します。
|
SSLParameters(String[] cipherSuites) |
指定された暗号化方式群の配列からSSLParametersを構築します。
|
SSLParameters(String[] cipherSuites, String[] protocols) |
指定された暗号化方式群とプロトコルの配列からSSLParametersを構築します。
|
修飾子と型 | メソッド | 説明 |
---|---|---|
AlgorithmConstraints |
getAlgorithmConstraints() |
暗号化アルゴリズムの制約を返します。
|
String[] |
getApplicationProtocols() |
SSL/TLS/DTLSプロトコルでネゴシエートできるアプリケーション層プロトコル名の優先順位付き配列を返します。
|
String[] |
getCipherSuites() |
暗号化方式群の配列のコピーを返します。設定されていない場合はnullを返します。
|
String |
getEndpointIdentificationAlgorithm() |
エンド・ポイント識別アルゴリズムを取得します。
|
boolean |
getNeedClientAuth() |
クライアント認証を必須とするかどうかを返します。
|
String[] |
getProtocols() |
プロトコルの配列のコピーを返します。設定されていない場合はnullを返します。
|
List<SNIServerName> |
getServerNames() |
Server Name Indication (SNI)パラメータのすべての
SNIServerName を含むList (何も設定されていない場合はnull)を返します。 |
Collection<SNIMatcher> |
getSNIMatchers() |
Server Name Indication (SNI)パラメータのすべての
SNIMatcher を含むCollection (何も設定されていない場合はnull)を返します。 |
boolean |
getUseCipherSuitesOrder() |
暗号化方式群のローカル設定を適用する必要があるかどうかを返します。
|
boolean |
getWantClientAuth() |
クライアント認証を要求するかどうかを返します。
|
void |
setAlgorithmConstraints(AlgorithmConstraints constraints) |
実行環境によって構成された任意の制約に加えて使用される、暗号化アルゴリズムの制約を設定します。
|
void |
setApplicationProtocols(String[] protocols) |
SSL/TLS/DTLSプロトコルでネゴシエートできるアプリケーション層プロトコル名の優先順位付き配列を設定します。
|
void |
setCipherSuites(String[] cipherSuites) |
暗号化方式群の配列を設定します。
|
void |
setEndpointIdentificationAlgorithm(String algorithm) |
エンド・ポイント識別アルゴリズムを設定します。
|
void |
setNeedClientAuth(boolean needClientAuth) |
クライアント認証を必須とするかどうかを設定します。
|
void |
setProtocols(String[] protocols) |
プロトコルの配列を設定します。
|
void |
setServerNames(List<SNIServerName> serverNames) |
Server Name Indication (SNI)パラメータの必要な
SNIServerName を設定します。 |
void |
setSNIMatchers(Collection<SNIMatcher> matchers) |
Server Name Indication (SNI)パラメータの
SNIMatcher を設定します。 |
void |
setUseCipherSuitesOrder(boolean honorOrder) |
暗号化方式群のローカル設定を適用する必要があるかどうかを設定します。
|
void |
setWantClientAuth(boolean wantClientAuth) |
クライアント認証を要求するかどうかを設定します。
|
public SSLParameters()
暗号化方式群、プロトコル、暗号化アルゴリズム制約、エンドポイント識別アルゴリズム、およびサーバー名とサーバー名マッチャの値はnull
に設定されます。useCipherSuitesOrder、wantClientAuth、およびneedClientAuthはfalse
に設定されます。
public SSLParameters(String[] cipherSuites)
このコンストラクタの呼出しは、引数なしのコンストラクタに続いてsetCipherSuites(cipherSuites);
を呼び出すことと同じです。
cipherSuites
- 暗号化方式群の配列(nullも可)public String[] getCipherSuites()
public void setCipherSuites(String[] cipherSuites)
cipherSuites
- 暗号化方式群の配列(nullも可)public String[] getProtocols()
public void setProtocols(String[] protocols)
protocols
- プロトコルの配列(nullも可)public boolean getWantClientAuth()
public void setWantClientAuth(boolean wantClientAuth)
needClientAuth
フラグがクリアされます。 wantClientAuth
- クライアント認証が要求されるかどうかpublic boolean getNeedClientAuth()
public void setNeedClientAuth(boolean needClientAuth)
wantClientAuth
フラグがクリアされます。 needClientAuth
- クライアント認証が必要かどうかpublic AlgorithmConstraints getAlgorithmConstraints()
setAlgorithmConstraints(AlgorithmConstraints)
public void setAlgorithmConstraints(AlgorithmConstraints constraints)
constraints
パラメータがnullではない場合は、SSL/TLSハンドシェークで使用されるすべての暗号化アルゴリズム、キーおよびアルゴリズム・パラメータが制約によって許容される必要があります。
constraints
- アルゴリズムの制約(またはnull)public String getEndpointIdentificationAlgorithm()
X509ExtendedTrustManager
, setEndpointIdentificationAlgorithm(String)
public void setEndpointIdentificationAlgorithm(String algorithm)
algorithm
パラメータがnullまたは空ではない場合は、SSL/TLSハンドシェークの際に、エンド・ポイント識別/検証プロシージャを実行する必要があります。 これを行うのは、man-in-the-middle攻撃を回避するためです。
algorithm
- エンド・ポイント識別アルゴリズムの標準名を表す文字列(またはnull)。 標準のアルゴリズム名については、「Java暗号化アーキテクチャAPIの仕様およびリファレンス」の「付録A」を参照してください。 X509ExtendedTrustManager
public final void setServerNames(List<SNIServerName> serverNames)
SNIServerName
を設定します。
このメソッドが役立つのは、クライアント・モードで動作するSSLSocket
またはSSLEngine
の場合のみです。
以後の変更から保護するために、serverNames
リストのクローンが作成されます。
serverNames
- 必要なSNIServerName
のリスト(またはnull)NullPointerException
- serverNames
にnull
要素が含まれている場合IllegalArgumentException
- serverNames
に同じ名前タイプの名前が複数個含まれている場合SNIServerName
, getServerNames()
public final List<SNIServerName> getServerNames()
SNIServerName
を含むList
(何も設定されていない場合はnull)を返します。
このメソッドが役立つのは、クライアント・モードで動作するSSLSocket
またはSSLEngine
の場合のみです。
SSL/TLS接続の場合、ベースとなるSSL/TLSプロバイダは特定のサーバー名タイプのデフォルト値を指定できます。 クライアント・モードでは、サポート対象のサーバー名タイプでサーバーを特定可能な場合には常に、プロバイダはデフォルトでサーバー名表示を含めるようにすることをお薦めします。
SSLSocket
/SSLEngine
の作成時にプロバイダがデフォルトのサーバー名表示を初期化することをお薦めします。 次の例では、サーバー名は、ホスト名「www.example.com」とタイプStandardConstants.SNI_HOST_NAME
で初期化されたSNIHostName
のインスタンスとして表現できます。
Socket socket = sslSocketFactory.createSocket("www.example.com", 443);または
SSLEngine engine = sslContext.createSSLEngine("www.example.com", 443);
SNIServerName
の不変なリストList
, setServerNames(List)
public final void setSNIMatchers(Collection<SNIMatcher> matchers)
SNIMatcher
を設定します。
このメソッドが役立つのは、サーバー・モードで動作するSSLSocket
またはSSLEngine
の場合のみです。
以後の変更から保護するために、matchers
コレクションのクローンが作成されます。
matchers
- SNIMatcher
のコレクション(またはnull)NullPointerException
- matchers
にnull
要素が含まれている場合IllegalArgumentException
- matchers
に同じ名前タイプの名前が複数個含まれている場合Collection
, SNIMatcher
, getSNIMatchers()
public final Collection<SNIMatcher> getSNIMatchers()
SNIMatcher
を含むCollection
(何も設定されていない場合はnull)を返します。
このメソッドが役立つのは、サーバー・モードで動作するSSLSocket
またはSSLEngine
の場合のみです。
相互運用性を高めるため、プロバイダは一般にデフォルトのマッチャを定義しませんが、これは、サーバーがデフォルトでSNI拡張を無視してハンドシェークを続行するようにするためです。
SNIMatcher
の不変なコレクションSNIMatcher
, setSNIMatchers(Collection)
public final void setUseCipherSuitesOrder(boolean honorOrder)
honorOrder
- SSL/TLSハンドシェーク時に#getCipherSuites
で暗号化方式群のローカル順序を適用する必要があるかどうか。getUseCipherSuitesOrder()
public final boolean getUseCipherSuitesOrder()
#getCipherSuites
で暗号化方式群のローカル順序を適用する必要があるかどうか。setUseCipherSuitesOrder(boolean)
public String[] getApplicationProtocols()
配列は空の(zero-length)になることがあります。この場合、プロトコルの指示は使用されません。
このメソッドは、呼び出されるたびに新しい配列を返します。
String
の非ヌル、場合によっては長さゼロの配列。 配列は、プロトコルの優先順位に基づいて順序付けされ、protocols[0]
が最も優先されます。 setApplicationProtocols(java.lang.String[])
public void setApplicationProtocols(String[] protocols)
アプリケーション層プロトコルが基盤となるSSL/TLS実装でサポートされている場合、このメソッドは、RFC 7301、Application Layer Protocol Negotiation (ALPN)などのプロトコルでどの値をネゴシエートできるかを構成します。
この接続の終わりがアプリケーション・プロトコル値を提供することが予想される場合、このメソッドで構成されたすべてのプロトコルがピアに送信されます。
この接続の終わりがアプリケーション・プロトコル値を選択すると予想される場合、このメソッドで構成されたprotocols
はピアによって送信された値と比較されます。 最初に一致した値がネゴシエートされた値になります。 protocols
のどれもピアによって実際にリクエストされなかった場合は、基礎となるプロトコルが、どのようなアクションをとるかを決定します。 (たとえば、ALPNは"no_application_protocol"
アラートを送信し、接続を終了します。)
protocols
配列のコピーを作成します。protocols
- protocols[0]
が最も優先されるアプリケーション・プロトコルの順序付けられた配列。 配列が空(zero-length)の場合は、プロトコルの指示は使用されません。 IllegalArgumentException
- protocolsがnullの場合、または空でない配列の要素がnullまたは空の(zero-length)文字列の場合getApplicationProtocols()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。