TLS 設定

TLS 設定のサポートをモジュールに追加する方法は簡単です。次の例のように、種別 TlsContextFactoryパラメータを宣言するだけです。

@Parameter
@Optional
private TlsContextFactory tlsContextFactory;

上記の例では、次の XML 設定のサポートが自動的に生成されます。

<tls:context enabledProtocols="TLSv1.2,SSLv3">
    <tls:trust-store path="my-trust-store.jks" password="myPassword"/>
    <tls:key-store path="my-key-store.jks" keyPassword="myPassword" password="myPassword"/>
</tls:context>

TLS コンテキストをアプリケーションのグローバル要素として定義することもできるため、使用する必要がある任意の場所でその名前を使用して TLS コンテキストを参照できます。

TLS の必要性をユーザに表示しない場合 (内部的にサービスに安全に接続する必要がある場合など)、そのビルダーを使用して独自の TlsContextFactory を作成できます。

private final TlsContextFactory tlsContextFactory = TlsContextFactory.builder()
                                                        .trustStorePath("tls/trustStore")
                                                        .trustStorePassword("mulepassword")
                                                        .build()

このビルダーでは、TlsContextFactory のデフォルトインスタンスを作成することもできます。

private final TlsContextFactory defaultTlsContextFactory = TlsContextFactory.builder().buildDefault();

TlsContextFactory が使用可能になると (パラメータとして使用可能か、そのビルダーを介して取得されたかに関係なく)、次の例のように初期化する必要があります。

if (tlsContextFactory instanceof Initialisable) {
  ((Initialisable) tlsContextFactory).initialise();
}

次に、これを使用して SSLContextSSLSocketFactory、または SSLServerSocketFactory を取得できます。また、有効になった TLS プロトコルと暗号化スイートを取得することもでき、これを使用して、以下の例のように、TLS/SSL を使用するほとんどの Java コンポーネントをセットアップできます。

FTPSClient をセットアップするには、​SSLContext を取得し、次にそのプロトコルと暗号化スイートを設定します。

SSLContext sslContext = tlsContextFactory.createSslContext();
String[] enabledProtocols = tlsContextFactory.getEnabledProtocols();
String[] enabledCiphers = tlsContextFactory.getEnabledCipherSuites();

FTPSClient client = new FTPSClient(sslContext);
client.setEnabledProtocols(enabledProtocols);
client.setEnabledCipherSuites(enabledCiphers);

SSLSocketFactory を取得して、独自の ソケットを作成することもできます。

SSLSocketFactory sslSocketFactory = tlsContextFactory.createSocketFactory();
Socket socket = sslSocketFactory.create();

代わりに ServerSocket を作成するには、​SSLServerSocketFactory を取得することもできます。

SSLServerSocketFactory sslServerSocketFactory = tlsContextFactory.createServerSocketFactory();
ServerSocket socket = sslServerSocketFactory.createServerSocket();

TLS コンテキストと、すべての使用可能なパラメータを正しく設定するには、「キーストアとトラストストアを使用した TLS の設定」を参照してください。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub