- java.lang.Object
- 
- javax.net.ssl.SSLParameters
 
- 
 public class SSLParameters extends Object SSL/TLS/DTLS接続のパラメータをカプセル化します。 パラメータは、SSL/TLS/DTLSハンドシェークで受け入れられる暗号スイートのリスト、許可されるプロトコルのリスト、SSL/TLS/DTLSハンドシェーク中のエンドポイント識別アルゴリズム、サーバー名の表示(SNI)、最大ネットワーク・パケット・サイズ、アルゴリズム制約、およびSSL/TLS/DTLSサーバー・クライアントの認証などをリクエストする必要があります。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);- 導入されたバージョン:
- 1.6
- 関連項目:
- SSLSocket,- SSLEngine,- SSLContext
 
- 
- 
コンストラクタのサマリーコンストラクタ コンストラクタ 説明 SSLParameters()SSLParametersを構築します。SSLParameters(String[] cipherSuites)指定された暗号化方式群の配列からSSLParametersを構築します。SSLParameters(String[] cipherSuites, String[] protocols)指定された暗号化方式群とプロトコルの配列からSSLParametersを構築します。
 - 
メソッドのサマリーすべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 AlgorithmConstraintsgetAlgorithmConstraints()暗号化アルゴリズムの制約を返します。String[]getApplicationProtocols()SSL/TLS/DTLSプロトコルでネゴシエートできるアプリケーション層プロトコル名の優先順位付き配列を返します。String[]getCipherSuites()暗号化方式群の配列のコピーを返します。設定されていない場合はnullを返します。booleangetEnableRetransmissions()DTLSハンドシェイク再送信を有効にするかどうかを返します。StringgetEndpointIdentificationAlgorithm()エンド・ポイント識別アルゴリズムを取得します。intgetMaximumPacketSize()SSL/TLS/DTLSレコードの最大予想ネットワーク・パケット・サイズをバイト単位で返します。booleangetNeedClientAuth()クライアント認証を必須とするかどうかを返します。String[]getProtocols()プロトコルの配列のコピーを返します。設定されていない場合はnullを返します。List<SNIServerName>getServerNames()Server Name Indication (SNI)パラメータのすべてのSNIServerNameを含むList(何も設定されていない場合はnull)を返します。Collection<SNIMatcher>getSNIMatchers()Server Name Indication (SNI)パラメータのすべてのSNIMatcherを含むCollection(何も設定されていない場合はnull)を返します。booleangetUseCipherSuitesOrder()暗号化方式群のローカル設定を適用する必要があるかどうかを返します。booleangetWantClientAuth()クライアント認証を要求するかどうかを返します。voidsetAlgorithmConstraints(AlgorithmConstraints constraints)実行環境によって構成された任意の制約に加えて使用される、暗号化アルゴリズムの制約を設定します。voidsetApplicationProtocols(String[] protocols)SSL/TLS/DTLSプロトコルでネゴシエートできるアプリケーション層プロトコル名の優先順位付き配列を設定します。voidsetCipherSuites(String[] cipherSuites)暗号化方式群の配列を設定します。voidsetEnableRetransmissions(boolean enableRetransmissions)DTLSハンドシェイク再送信を有効にするかどうかを設定します。voidsetEndpointIdentificationAlgorithm(String algorithm)エンド・ポイント識別アルゴリズムを設定します。voidsetMaximumPacketSize(int maximumPacketSize)SSL/TLS/DTLSレコードの最大予想ネットワーク・パケット・サイズをバイト単位で設定します。voidsetNeedClientAuth(boolean needClientAuth)クライアント認証を必須とするかどうかを設定します。voidsetProtocols(String[] protocols)プロトコルの配列を設定します。voidsetServerNames(List<SNIServerName> serverNames)Server Name Indication (SNI)パラメータの必要なSNIServerNameを設定します。voidsetSNIMatchers(Collection<SNIMatcher> matchers)Server Name Indication (SNI)パラメータのSNIMatcherを設定します。voidsetUseCipherSuitesOrder(boolean honorOrder)暗号化方式群のローカル設定を適用する必要があるかどうかを設定します。voidsetWantClientAuth(boolean wantClientAuth)クライアント認証を要求するかどうかを設定します。
 
- 
- 
- 
コンストラクタの詳細- 
SSLParameterspublic SSLParameters() SSLParametersを構築します。cipherSuites、プロトコル、暗号アルゴリズムの制約、エンドポイント識別アルゴリズム、サーバー名、サーバー名マッチャの値は nullに設定されています。useCipherSuitesOrder、wantClientAuthおよびneedClientAuthはfalseに設定されます。enableRetransmissionsはtrueに設定されます。最大ネットワーク・パケット・サイズは0に設定されます。
 - 
SSLParameterspublic SSLParameters(String[] cipherSuites) 指定された暗号化方式群の配列からSSLParametersを構築します。このコンストラクタの呼出しは、引数なしのコンストラクタに続いて setCipherSuites(cipherSuites);を呼び出すことと同じです。 暗号スイート名の標準リストは、Java暗号化アーキテクチャの標準アルゴリズム名のドキュメントの「JSSE暗号スイート名」セクションにあります。 プロバイダは、このリストにない暗号スイート名をサポートすることがあります。- パラメータ:
- cipherSuites- 暗号化方式群の配列(nullも可)
 
 - 
SSLParameterspublic SSLParameters(String[] cipherSuites, String[] protocols) 指定された暗号化方式群とプロトコルの配列からSSLParametersを構築します。このコンストラクタの呼出しは、引数なしのコンストラクタに続いて setCipherSuites(cipherSuites); setProtocols(protocols);を呼び出すことと同じです。 暗号スイート名の標準リストは、Java暗号化アーキテクチャの標準アルゴリズム名のドキュメントの「JSSE暗号スイート名」セクションにあります。 プロバイダは、このリストにない暗号スイート名をサポートすることがあります。- パラメータ:
- cipherSuites- 暗号化方式群の配列(nullも可)
- protocols- プロトコルの配列(nullも可)
 
 
- 
 - 
メソッドの詳細- 
getCipherSuitespublic String[] getCipherSuites() 暗号化方式群の配列のコピーを返します。設定されていない場合はnullを返します。返される配列には、Java Cryptography Architecture標準アルゴリズム名ドキュメントの「JSSE暗号スイート名」セクションの標準暗号スイート名のリストからの暗号スイートが含まれ、プロバイダがサポートする他の暗号スイートも含まれます。 - 戻り値:
- 暗号化方式群の配列のコピー。設定されていない場合はnull。
 
 - 
setCipherSuitespublic void setCipherSuites(String[] cipherSuites) 暗号化方式群の配列を設定します。- パラメータ:
- cipherSuites- 暗号化方式群の配列(nullも可) 暗号スイート名の標準リストは、Java暗号化アーキテクチャの標準アルゴリズム名のドキュメントの「JSSE暗号スイート名」セクションにあります。 プロバイダは、このリストにない暗号スイート名をサポートしているか、特定の暗号スイートの推奨名を使用していない可能性があります。
 
 - 
getProtocolspublic String[] getProtocols() プロトコルの配列のコピーを返します。設定されていない場合はnullを返します。- 戻り値:
- プロトコルの配列のコピー。設定されていない場合はnull。
 
 - 
setProtocolspublic void setProtocols(String[] protocols) プロトコルの配列を設定します。- パラメータ:
- protocols- プロトコルの配列(nullも可)
 
 - 
getWantClientAuthpublic boolean getWantClientAuth() クライアント認証を要求するかどうかを返します。- 戻り値:
- クライアント認証を要求するかどうか。
 
 - 
setWantClientAuthpublic void setWantClientAuth(boolean wantClientAuth) クライアント認証を要求するかどうかを設定します。 このメソッドを呼び出すと、needClientAuthフラグがクリアされます。- パラメータ:
- wantClientAuth- クライアント認証が要求されるかどうか
 
 - 
getNeedClientAuthpublic boolean getNeedClientAuth() クライアント認証を必須とするかどうかを返します。- 戻り値:
- クライアント認証を必須とするかどうか。
 
 - 
setNeedClientAuthpublic void setNeedClientAuth(boolean needClientAuth) クライアント認証を必須とするかどうかを設定します。 このメソッドを呼び出すと、wantClientAuthフラグがクリアされます。- パラメータ:
- needClientAuth- クライアント認証が必要かどうか
 
 - 
getAlgorithmConstraintspublic AlgorithmConstraints getAlgorithmConstraints() 暗号化アルゴリズムの制約を返します。- 戻り値:
- 暗号化アルゴリズムの制約。制約が設定されていない場合はnull
- 導入されたバージョン:
- 1.7
- 関連項目:
- setAlgorithmConstraints(AlgorithmConstraints)
 
 - 
setAlgorithmConstraintspublic void setAlgorithmConstraints(AlgorithmConstraints constraints) 実行環境によって構成された任意の制約に加えて使用される、暗号化アルゴリズムの制約を設定します。constraintsパラメータがnullでない場合、SSL/TLS/DTLSハンドシェイクで使用されるすべての暗号化アルゴリズム、キーおよびアルゴリズム・パラメータは、制約によって許可されなければなりません。- パラメータ:
- constraints- アルゴリズムの制約(またはnull)
- 導入されたバージョン:
- 1.7
 
 - 
getEndpointIdentificationAlgorithmpublic String getEndpointIdentificationAlgorithm() エンド・ポイント識別アルゴリズムを取得します。- 戻り値:
- エンド・ポイント識別アルゴリズム。設定されていない場合はnull。
- 導入されたバージョン:
- 1.7
- 関連項目:
- X509ExtendedTrustManager,- setEndpointIdentificationAlgorithm(String)
 
 - 
setEndpointIdentificationAlgorithmpublic void setEndpointIdentificationAlgorithm(String algorithm) エンド・ポイント識別アルゴリズムを設定します。algorithmパラメータがnullでも空でもない場合は、SSL/TLS/DTLSハンドシェイク中にエンドポイントの識別/検証手順を処理する必要があります。 これを行うのは、man-in-the-middle攻撃を回避するためです。- パラメータ:
- algorithm- エンド・ポイント識別アルゴリズムの標準名を表す文字列(またはnull)。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名」のドキュメントを参照してください。
- 導入されたバージョン:
- 1.7
- 関連項目:
- X509ExtendedTrustManager
 
 - 
setServerNamespublic final void setServerNames(List<SNIServerName> serverNames) Server Name Indication (SNI)パラメータの必要なSNIServerNameを設定します。このメソッドが役立つのは、クライアント・モードで動作する SSLSocketまたはSSLEngineの場合のみです。以後の変更から保護するために、 serverNamesリストのクローンが作成されます。- パラメータ:
- serverNames- 必要な- SNIServerNameのリスト(またはnull)
- 例外:
- NullPointerException-- serverNamesに- null要素が含まれている場合
- IllegalArgumentException-- serverNamesに同じ名前タイプの名前が複数個含まれている場合
- 導入されたバージョン:
- 1.8
- 関連項目:
- SNIServerName,- getServerNames()
 
 - 
getServerNamespublic final List<SNIServerName> getServerNames() Server Name Indication (SNI)パラメータのすべてのSNIServerNameを含むList(何も設定されていない場合はnull)を返します。このメソッドが役立つのは、クライアント・モードで動作する SSLSocketまたはSSLEngineの場合のみです。SSL/TLS/DTLS接続の場合、基になるSSL/TLS/DTLSプロバイダは、特定のサーバー名型のデフォルト値を指定することができます。 クライアント・モードでは、サポート対象のサーバー名タイプでサーバーを特定可能な場合には常に、プロバイダはデフォルトでサーバー名表示を含めるようにすることをお薦めします。 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);- 戻り値:
- null、またはnull以外のSNIServerNameの不変なリスト
- 導入されたバージョン:
- 1.8
- 関連項目:
- List,- setServerNames(List)
 
 - 
setSNIMatcherspublic final void setSNIMatchers(Collection<SNIMatcher> matchers) Server Name Indication (SNI)パラメータのSNIMatcherを設定します。このメソッドが役立つのは、サーバー・モードで動作する SSLSocketまたはSSLEngineの場合のみです。以後の変更から保護するために、 matchersコレクションのクローンが作成されます。- パラメータ:
- matchers-- SNIMatcherのコレクション(またはnull)
- 例外:
- NullPointerException-- matchersに- null要素が含まれている場合
- IllegalArgumentException-- matchersに同じ名前タイプの名前が複数個含まれている場合
- 導入されたバージョン:
- 1.8
- 関連項目:
- Collection,- SNIMatcher,- getSNIMatchers()
 
 - 
getSNIMatcherspublic final Collection<SNIMatcher> getSNIMatchers() Server Name Indication (SNI)パラメータのすべてのSNIMatcherを含むCollection(何も設定されていない場合はnull)を返します。このメソッドが役立つのは、サーバー・モードで動作する SSLSocketまたはSSLEngineの場合のみです。相互運用性を高めるため、プロバイダは一般にデフォルトのマッチャを定義しませんが、これは、サーバーがデフォルトでSNI拡張を無視してハンドシェークを続行するようにするためです。 - 戻り値:
- null、またはnull以外のSNIMatcherの不変なコレクション
- 導入されたバージョン:
- 1.8
- 関連項目:
- SNIMatcher,- setSNIMatchers(Collection)
 
 - 
setUseCipherSuitesOrderpublic final void setUseCipherSuitesOrder(boolean honorOrder) 暗号化方式群のローカル設定を適用する必要があるかどうかを設定します。- パラメータ:
- honorOrder-- #getCipherSuitesでのローカル暗号スイートのオーダーがSSL/TLS/DTLSハンドシェイク中に尊重されるべきかどうか。
- 導入されたバージョン:
- 1.8
- 関連項目:
- getUseCipherSuitesOrder()
 
 - 
getUseCipherSuitesOrderpublic final boolean getUseCipherSuitesOrder() 暗号化方式群のローカル設定を適用する必要があるかどうかを返します。- 戻り値:
- #getCipherSuitesのローカル暗号スイートのオーダーがSSL/TLS/DTLSハンドシェイク中に尊重されるべきかどうか。
- 導入されたバージョン:
- 1.8
- 関連項目:
- setUseCipherSuitesOrder(boolean)
 
 - 
setEnableRetransmissionspublic void setEnableRetransmissions(boolean enableRetransmissions) DTLSハンドシェイク再送信を有効にするかどうかを設定します。 このメソッドは、DTLSにのみ適用されます。- パラメータ:
- enableRetransmissions-- trueは、DTLSハンドシェイク再送信を有効にする必要があることを示します。- falseは、DTLSハンドシェイク再送信を無効にする必要があることを示します
- 導入されたバージョン:
- 9
- 関連項目:
- getEnableRetransmissions()
 
 - 
getEnableRetransmissionspublic boolean getEnableRetransmissions() DTLSハンドシェイク再送信を有効にするかどうかを返します。 このメソッドは、DTLSにのみ適用されます。- 戻り値:
- DTLSハンドシェイク再送信を有効にする必要がある場合はtrue
- 導入されたバージョン:
- 9
- 関連項目:
- setEnableRetransmissions(boolean)
 
 - 
setMaximumPacketSizepublic void setMaximumPacketSize(int maximumPacketSize) SSL/TLS/DTLSレコードの最大予想ネットワーク・パケット・サイズをバイト単位で設定します。- APIの注:
- 可能であれば、HelloVerifyRequestsなどの小さなハンドシェーク・メッセージがフラグメント化されないように、最大パケット・サイズは256バイト未満にすることはお勧めしません。
- 実装上の注意:
- 最大パケット・サイズが小さすぎて最小レコードを保持できない場合、実装は可能な限り最小限のレコードを生成しようとする可能性があります。 しかし、これにより、生成されたパケットが最大パケット・サイズより大きくなる可能性があります。
- パラメータ:
- maximumPacketSize- 予想される最大ネットワーク・パケット・サイズ(バイト数)、または基礎となる実装によって自動的に指定される暗黙のサイズを使用する- 0。
- 例外:
- IllegalArgumentException-- maximumPacketSizeが負の場合。
- 導入されたバージョン:
- 9
- 関連項目:
- getMaximumPacketSize()
 
 - 
getMaximumPacketSizepublic int getMaximumPacketSize() SSL/TLS/DTLSレコードの最大予想ネットワーク・パケット・サイズをバイト単位で返します。- APIの注:
- 暗黙のサイズは、特にDTLSプロトコル実装の場合、固定値ではない可能性があります。
- 実装上の注意:
- SSL/TLS/DTLS接続では、明示的に構成されていない場合、予想される最大ネットワーク・パケット・サイズの暗黙値を計算して指定する必要があります。 実装された接続オブジェクトの場合、このメソッドはアプリケーションが実際の暗黙的な実装のサイズを取得できるように、0を返すべきではありません。インプリメンテーションは、最大パケット・サイズ構成に準拠しようとする必要があります。 しかし、最大パケット・サイズが小さすぎて最小限のレコードを保持できない場合、実装は可能な限り最小限のレコードを生成しようとする可能性があります。 これにより、生成されたパケットが最大パケット・サイズより大きくなる可能性があります。 
- 戻り値:
- 予想される最大ネットワーク・パケット・サイズ、または基本実装によって自動的に指定される暗黙的なサイズを使用する場合は0。このオブジェクトは接続によって生成されません。
- 導入されたバージョン:
- 9
- 関連項目:
- setMaximumPacketSize(int)
 
 - 
getApplicationProtocolspublic String[] getApplicationProtocols() SSL/TLS/DTLSプロトコルでネゴシエートできるアプリケーション層プロトコル名の優先順位付き配列を返します。配列は空の(zero-length)になることがあります。この場合、プロトコルの指示は使用されません。 このメソッドは、呼び出されるたびに新しい配列を返します。 - 戻り値:
- アプリケーション・プロトコルStringの非ヌル、場合によっては長さゼロの配列。 配列は、プロトコルの優先順位に基づいて順序付けされ、protocols[0]が最も優先されます。
- 導入されたバージョン:
- 9
- 関連項目:
- setApplicationProtocols(java.lang.String[])
 
 - 
setApplicationProtocolspublic void setApplicationProtocols(String[] protocols) SSL/TLS/DTLSプロトコルでネゴシエートできるアプリケーション層プロトコル名の優先順位付き配列を設定します。アプリケーション層プロトコルが基盤となる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)文字列の場合
- 導入されたバージョン:
- 9
- 関連項目:
- getApplicationProtocols()
 
 
- 
 
-