

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SDK for Java で TLS の使用
<a name="security-java-tls"></a>

は、基盤となる Java プラットフォームの TLS 機能 AWS SDK for Java を使用します。このトピックでは、[Amazon Corretto 17](https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/index.html) で使用されている OpenJDK 実装を使用した例を紹介します。

を使用するには AWS のサービス、基盤となる JDK が TLS 1.2 の最小バージョンをサポートしている必要がありますが、TLS 1.3 が推奨されます。

ユーザーは、SDK で使用している Java プラットフォームのドキュメントを参照して、デフォルトで有効になっている TLS バージョンと、特定の TLS バージョンを有効または無効にする方法を確認する必要があります。

## TLS バージョン情報を確認する方法
<a name="how-to-check-the-tls-version"></a>

OpenJDK を使用した次のコードは、[SSLContext](https://devdocs.io/openjdk~17/java.base/javax/net/ssl/sslcontext#getSupportedSSLParameters()) を使用して、サポートされている TLS/SSL バージョンを出力する方法を示しています。

```
System.out.println(Arrays.toString(SSLContext.getDefault().getSupportedSSLParameters().getProtocols()));
```

たとえば、Amazon Corretto 17 (OpenJDK) は以下の出力を生成します。

```
[TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, SSLv3, SSLv2Hello]
```

動作中の SSL ハンドシェイクと使用されている TLS のバージョンを確認するには、システムプロパティ **javax.net.debug** を使用します。

たとえば、TLS を使用する Java アプリケーションを実行します。

```
java app.jar -Djavax.net.debug=ssl:handshake
```

アプリケーションでは、次のような SSL ハンドシェイクがログ記録されます。

```
...
javax.net.ssl|DEBUG|10|main|2022-12-23 13:53:12.221 EST|ClientHello.java:641|Produced ClientHello handshake message (
"ClientHello": {
  "client version"      : "TLSv1.2",

...
javax.net.ssl|DEBUG|10|main|2022-12-23 13:53:12.295 EST|ServerHello.java:888|Consuming ServerHello handshake message (
"ServerHello": {
  "server version"      : "TLSv1.2",
...
```

## 最小 TLS バージョンを強制する
<a name="enforce-minimum-tls-version"></a>

SDK for Java は、プラットフォームとサービスでサポートされている最新の TLS バージョンを常に優先します。特定の最小 TLS バージョンを強制する場合は、Java プラットフォームのドキュメントを確認してください。

OpenJDK ベースの JVM では、システムプロパティ `jdk.tls.client.protocols` を使用できます。

たとえば、TLS 1.3 が利用可能であっても、アプリケーション内の SDK サービスクライアントに TLS 1.2 を使用させたい場合は、次のシステムプロパティを指定します。

```
java app.jar -Djdk.tls.client.protocols=TLSv1.2
```

## AWS API エンドポイントを TLS 1.2 にアップグレードする
<a name="tls-more-info"></a>

最小バージョンの TLS 1.2 に移行する AWS API エンドポイントの詳細については、この[ブログ記事](https://aws.amazon.com/blogs//security/tls-1-2-required-for-aws-endpoints/)を参照してください。