

 AWS SDK for .NET V3 がメンテナンスモードになりました。

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) に移行することをお勧めします。移行方法の詳細と情報については、[メンテナンスモードのお知らせ](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)を参照してください。

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

# で最小 TLS バージョンを適用する AWS SDK for .NET
<a name="enforcing-tls"></a>

 AWS サービスと通信する際のセキュリティを強化するには、TLS 1.2 以降を使用する AWS SDK for .NET ように を設定する必要があります。

 AWS SDK for .NET は、基盤となる .NET ランタイムを使用して、使用するセキュリティプロトコルを決定します。現行バージョンの .NET は、デフォルトでオペレーティングシステムがサポートする最新の設定済みプロトコルを使用します。この SDK の動作はアプリケーションで上書きできますが、上書きは*推奨されません*。

## .NET Core
<a name="enforcing-tls-dotnet-core"></a>

.NET Core は、デフォルトでオペレーティングシステムがサポートする最新の設定済みプロトコルを使用します。 AWS SDK for .NET は、この動作を上書きする機構を提供していません。

バージョン 2.1 より前の .NET Core を使用している場合は、.NET Core バージョンをアップグレードすることを*強く*お勧めします。

オペレーティングシステムごとの固有の情報については、以下を参照してください。

**Windows**

Windows の最新のディストリビューションでは、TLS 1.2 のサポートが [デフォルトで有効](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-)になっています。Windows 7 SP1 または Windows Server 2008 R2 SP1 上で実行している場合は、レジストリで TLS 1.2 のサポートが有効になっていることを確認する必要があります。詳細については、[https://learn.microsoft.com/ja-jp/windows-server/security/tls/tls-registry-settings\#tls-12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12) を参照してください。以前のディストリビューションを実行している場合は、オペレーティングシステムをアップグレードする必要があります。WindowsのTLS 1.3サポートについては、必要最小限のクライアントまたはサーバーのバージョンについて、最新のMicrosoftドキュメントを確認してください。

**macOS**

.NET Core 2.1 以降を実行している場合、TLS 1.2 はデフォルトで有効になっています。TLS 1.2 は [OS X Mavericks v10.9 以降](https://support.apple.com/en-us/103373)でサポートされています。.NET Core バージョン 2.1 以降では、より新しいバージョンの macOS が必要です。詳細については、[https://learn.microsoft.com/ja-jp/dotnet/core/install/windows?tabs=net80&pivots=os-macos](https://learn.microsoft.com/en-us/dotnet/core/install/windows?tabs=net80&pivots=os-macos) を参照してください。

.NET Core 1.0 を使用している場合、.NET Core は [OpenSSL を macOS で使用](https://github.com/dotnet/announcements/issues/21)します。この OpenSSL は別個にインストールする必要がある依存関係です。OpenSSL は、バージョン 1.0.1 で TLS 1.2 のサポートを追加し、バージョン 1.1.1 で TLS 1.3 のサポートを追加しました。。

**Linux**

Linux 上の .NET コアには OpenSSL が必要です。OpenSSL は、多くの Linux ディストリビューションにバンドルされていますが、別個にインストールすることもできます。OpenSSL は、バージョン 1.0.1 で TLS 1.2 のサポートを追加し、バージョン 1.1.1 で TLS 1.3 のサポートを追加しました。最新バージョンの .NET Core (2.1 以降) を使用していて、パッケージマネージャーをインストールしている場合は、通常、最新バージョンの OpenSSL がインストール済みです。

これを調べるには、ターミナルで **`openssl version`** を実行し、バージョンが 1.0.1 より新しいことを確認します。

## 特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。
<a name="enforcing-tls-dotnet-framework"></a>

新しいバージョンの .NET Framework (4.7 以降) と新しいバージョンの Windows (クライアントの場合は Windows 8 以上、サーバーの場合は Windows Server 2012 以降) を実行している場合、TLS 1.2 はデフォルトで有効化され、使用されています。

オペレーティングシステム設定 (.NET Framework 3.5～4.5.2) を使用しない .NET Framework ランタイムを使用している場合、 AWS SDK for .NET はサポートされているプロトコルに [TLS 1.1 および TLS 1.2 のサポートを追加](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/Amazon.Runtime/Pipeline/HttpHandler/AmazonSecurityProtocolManager.cs)しようとします。.NET Framework 3.5 を使用している場合、これが成功するのは、次のように適切なホットパッチがインストールされている場合のみです。
+ Windows 10 バージョン 1511 および Windows Server 2016 – [KB3156421](https://support.microsoft.com/kb/3156421)
+ Windows 8.1 および Windows Server 2012 R2 – [KB3154520](https://support.microsoft.com/kb/3154520)
+ Windows Server 2012 – [KB3154519](https://support.microsoft.com/kb/3154519)
+ Windows 7 SP1 および Server 2008 R2 SP1 – [KB3154518](https://support.microsoft.com/kb/3154518)

**警告**  
2024 年 8 月 15 日以降、 AWS SDK for .NET は .NET Framework 3.5 のサポートを終了し、.NET Framework の最小バージョンを 4.7.2 に変更します。詳細については、ブログ記事「[Important changes coming for .NET Framework 3.5 and 4.5 targets of the AWS SDK for .NET](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/)」を参照してください。

アプリケーションを Windows 7 SP1 または Windows Server 2008 R2 SP1 上の新しい .NET Framework で実行している場合は、レジストリで TLS 1.2 のサポートが有効になっていることを確認する必要があります。詳細については、[https://learn.microsoft.com/ja-jp/windows-server/security/tls/tls-registry-settings\#tls-12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12) を参照してください。新しいバージョンの Windows の場合、これは[デフォルトで有効](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-)になっています。

.NET Framework で TLS を使用するための詳細なベストプラクティスについては、Microsoft の記事 ([https://learn.microsoft.com/ja-jp/dotnet/framework/network-programming/tls](https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls)) を参照してください。

## AWS Tools for PowerShell
<a name="enforcing-tls-ps"></a>

[AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) AWS サービスへのすべての呼び出し AWS SDK for .NET に を使用します。環境の動作は、次のように、実行している Windows PowerShell のバージョンによって異なります。

**Windows PowerShell 2.0～5.x**

Windows PowerShell 2.0～5.x は .NET Framework で実行します。どの .NET ランタイム (2.0 または 4.0) が PowerShell で使用されているかは、次のコマンドで確認できます。

```
$PSVersionTable.CLRVersion
```
+ .NET ランタイム 2.0 を使用している場合は、 AWS SDK for .NET および .NET Framework 3.5 に関する前述の手順に従います。
**警告**  
2024 年 8 月 15 日以降、 AWS SDK for .NET は .NET Framework 3.5 のサポートを終了し、.NET Framework の最小バージョンを 4.7.2 に変更します。詳細については、ブログ記事「[Important changes coming for .NET Framework 3.5 and 4.5 targets of the AWS SDK for .NET](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/)」を参照してください。
+ .NET ランタイム 4.0 を使用している場合は、 AWS SDK for .NET および .NET Framework 4\+ に関する前述の手順に従います。

**Windows PowerShell 6.0**

Windows PowerShell 6.0 以降は、.NET Core で実行します。どのバージョンの .NET Core が使用されているかは、次のコマンドで確認できます。

```
[System.Reflection.Assembly]::GetEntryAssembly().GetCustomAttributes([System.Runtime.Versioning.TargetFrameworkAttribute], $true).FrameworkName
```

 AWS SDK for .NET および .NET Core の関連バージョンについては、前述の手順に従ってください。

## Xamarin
<a name="enforcing-tls-xamarin"></a>

Xamarin については、[https://learn.microsoft.com/ja-jp/xamarin/cross-platform/app-fundamentals/transport-layer-security](https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security) の手順を参照してください。要約は、以下のとおりです。

**Android の場合**
+ Android 5.0 以降が必要です。
+ [**プロジェクトのプロパティ**]、[**Android のオプション**]: [HttpClient 実装] を [**Android**] に設定し、[SSL/TLS 実装] を [**Native TLS 1.2\+**] に設定する必要があります。

**iOS の場合**
+ iOS 7 以降が必要です。
+ [**プロジェクトのプロパティ**]、[**iOS ビルド**]: [HttpClient 実装] を [**NSUrlSession**] に設定する必要があります。

**macOS の場合**
+ macOS 10.9 以降が必要です。
+ [**プロジェクトのオプション**]、[**ビルド**]、[**Mac ビルド**]: [HttpClient 実装] を [**NSUrlSession**] に設定する必要があります。

## Unity
<a name="enforcing-tls-unity"></a>

Unity 2018.2 以降を使用し、.NET 4.x Equivalent スクリプティングランタイムを使用する必要があります。これを設定するには、[**Project Settings**]、[**Configuration**]、[**Player**] の順に選択します。詳細については、[https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html](https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html) を参照してください。.NET 4.x Equivalent スクリプティングランタイムは、Mono または IL2CPP を実行するすべての Unity プラットフォームで TLS 1.2 のサポートを有効にします。

## ブラウザ (Blazor WebAssembly 用)
<a name="enforcing-tls-browser"></a>

WebAssembly は、サーバー上ではなくブラウザで実行され、ブラウザを使用して HTTP トラフィックを処理します。したがって、TLS のサポートはブラウザのサポートによって決まります。

Blazor WebAssembly は、ASP.NET Core 3.1 のプレビューで、[https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms](https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms) で説明されているように、WebAssembly をサポートするブラウザでのみサポートされています。すべてのメインストリームブラウザは、WebAssembly をサポートする前に TLS 1.2 をサポートしていました。これに該当するブラウザの場合、アプリを実行すると、アプリは TLS 1.2 経由で通信できます。

詳細と検証については、ブラウザのドキュメントを参照してください。