0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ServicePointManager.SecurityProtocolの設定を忘れない

Last updated at Posted at 2025-03-08

はじめに

ServicePointManager.SecurityProtocolを設定していないためにずっとエラーがでていました。気づかずに無駄なデバッグ作業を多くしてしまったので、記事にして忘れないようにしたいと思います。

最新の .NET バージョンおよびオペレーティング システム環境の場合、TLS のバージョンを明示的に設定する必要はないらしい。

SecurityProtocolとは

ServicePointManager.SecurityProtocol は、.NET アプリケーションで通信に使用する TLS(Transport Layer Security)のバージョンを指定するためのプロパティです。TLSは、インターネット通信のセキュリティを保護するプロトコルです。特に、HTTPS通信などで重要な役割を果たします。

こうやって設定します。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

なお、TLS 1.3については、.NET Frameworkではサポートされていません。 TLS 1.3は、.NET 5.0以降やそれに対応する環境でのみ使用可能です。

.NET Framework の場合でも Windows 11 と .NET Framework 4.6.2 以降なら TLS 1.3 に対応している。

必要な理由

  • セキュリティ向上 : TLSには複数のバージョンがあり、古いバージョン(例:TLS 1.0やTLS 1.1)は既知の脆弱性を抱えているため、現代の安全な通信にはTLS 1.2以上の使用が推奨されます。これにより、通信の暗号化強度が向上し、より安全な通信が保証されます。

  • 接続の互換性 : 一部のサーバーでは最新のTLSバージョンのみをサポートしている場合があります。適切なTLSバージョンを指定することで、接続エラーを防ぎ、確実な通信が可能になります。

設定しないとどうなるか

  • 安全性の低下 : 設定を行わない場合、.NET Frameworkはシステム既定のTLSバージョン(通常はTLS 1.0やTLS 1.1)を使用するため、通信自体は暗号化されますが、セキュリティ面でリスクがあります。古いTLSバージョンはその暗号化方式に脆弱性があるため、攻撃者による悪用のリスクが高まります。
  • 接続エラー: サーバー側がTLS 1.2以上を必須としている場合、古いバージョンでの接続ではエラーが発生することがあります。
  • 脆弱性 : 古いTLSバージョンを使用すると、通信内容が解読されるリスクが高まるため、常に最新のバージョンを使用することが推奨されます。

エラーの有無

設定を行わない場合、接続先のサーバーや実行環境によって結果が異なります。以下のようなケースがあります。

エラーが発生しない場合:

  • デフォルト設定の場合 : .NET Frameworkはシステム既定のTLSバージョンを使用します。サーバーが古いバージョンにも対応していれば接続が成功することがありますが、その場合もセキュリティリスクが伴います。
  • 古いTLSバージョンに対応している場合 : 接続は成功しますが、暗号化の強度が低いため、通信内容が保護されていない可能性があります。

エラーが発生しない場合でも、古いTLSバージョンを使うと暗号化の強度が弱くなる。

エラーが発生する場合:

  • サーバーが最新のTLSバージョンを要求している場合 : サーバー側がTLS 1.2以上を要求している場合、古いバージョンで接続しようとするとエラーが発生します。この場合、ServicePointManager.SecurityProtocolでTLS 1.2を指定することで接続が成功します。
  • システムがTLS 1.2以上に対応していない場合 : 古いOSや.NET Frameworkのバージョンでは、TLS 1.2をサポートしていないことがあり、その場合接続エラーが発生する可能性があります。

おわりに

未来の自分が同じことに時間をたくさん割かないように。がんばれ!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?