ServicePointManager.SecurityProtocol ServicePointManager.SecurityProtocol ServicePointManager.SecurityProtocol ServicePointManager.SecurityProtocol Property


その ServicePointManager オブジェクトが管理する ServicePoint オブジェクトで使用されるセキュリティ プロトコルを取得または設定します。Gets or sets the security protocol used by the ServicePoint objects managed by the ServicePointManager object.

 static property System::Net::SecurityProtocolType SecurityProtocol { System::Net::SecurityProtocolType get(); void set(System::Net::SecurityProtocolType value); };
public static System.Net.SecurityProtocolType SecurityProtocol { get; set; }
member this.SecurityProtocol : System.Net.SecurityProtocolType with get, set
Public Shared Property SecurityProtocol As SecurityProtocolType


SecurityProtocolType 列挙値に定義されている値の 1 つ。One of the values defined in the SecurityProtocolType enumeration.


プロパティを設定するために指定された値が有効な SecurityProtocolType 列挙値ではありません。The value specified to set the property is not a valid SecurityProtocolType enumeration value.


このプロパティは、新しい接続に使用する Secure Sockets Layer (SSL) またはトランスポート層セキュリティ (TLS) プロトコルのバージョンを選択します。既存の接続は変更されません。This property selects the version of the Secure Sockets Layer (SSL) or Transport Layer Security (TLS) protocol to use for new connections; existing connections aren't changed.

.NET Framework 4.7 以降では、このプロパティの既定値はSecurityProtocolType.SystemDefaultになります。Starting with the .NET Framework 4.7, the default value of this property is SecurityProtocolType.SystemDefault. これにより、(FTP、 SslStream HTTP、SMTP などの) に基づくネットワーク api を .NET Framework、オペレーティングシステムから、またはシステム管理者によって実行されるカスタム構成から、既定のセキュリティプロトコルを継承することができます。This allows .NET Framework networking APIs based on SslStream (such as FTP, HTTP, and SMTP) to inherit the default security protocols from the operating system or from any custom configurations performed by a system administrator. Windows オペレーティングシステムの各バージョンで既定で有効になっている SSL/TLS プロトコルの詳細については、「 TLS/SSL (SCHANNEL SSP) のプロトコル」を参照してください。For information about which SSL/TLS protocols are enabled by default on each version of the Windows operating system, see Protocols in TLS/SSL (Schannel SSP).

.NET Framework 4.6.2 を通じて .NET Framework のバージョンの場合、このプロパティには既定値が表示されません。For versions of the .NET Framework through the .NET Framework 4.6.2, no default value is listed for this property. セキュリティのランドスケープは絶えず変化し、既知の弱点を避けるために、既定のプロトコルと保護レベルは時間の経過と共に変更されます。The security landscape changes constantly, and default protocols and protection levels are changed over time in order to avoid known weaknesses. 既定値は、個々のコンピューターの構成、インストールされているソフトウェア、適用されている修正プログラムによって異なります。Defaults vary depending on individual machine configuration, installed software, and applied patches.

コードは、特定の保護レベルを使用するか、特定のセキュリティレベルが既定で使用されることを前提として、暗黙的に依存しないようにする必要があります。Your code should never implicitly depend on using a particular protection level, or on the assumption that a given security level is used by default. アプリが特定のセキュリティレベルの使用に依存している場合は、そのレベルを明示的に指定し、確立された接続で実際に使用されていることを確認する必要があります。If your app depends on the use of a particular security level, you must explicitly specify that level and then check to be sure that it is actually in use on the established connection. さらに、コードは、サポートされるプロトコルが変更された場合に堅牢であるように設計する必要があります。このような変更は、多くの場合、新しい脅威を軽減するためにほとんど事前通知が行われます。Further, your code should be designed to be robust in the face of changes to which protocols are supported, as such changes are often made with little advance notice in order to mitigate emerging threats.

.NET Framework 4.6 には、安全でない暗号およびハッシュ アルゴリズムの接続をブロックする、新しいセキュリティ機能が含まれています。The .NET Framework 4.6 includes a new security feature that blocks insecure cipher and hashing algorithms for connections. HttpClient、HttpWebRequest、FTPClient、SmtpClient、SslStream などの API を介して TLS/SSL を使用して、.NET Framework 4.6 を対象とするアプリケーションは、既定でセキュリティが強化された動作を取得します。Applications using TLS/SSL through APIs such as HttpClient, HttpWebRequest, FTPClient, SmtpClient, SslStream, etc. and targeting .NET Framework 4.6 get the more-secure behavior by default.

開発者は、既存の SSL3 サービスや TLS (RC4) サービスとの相互運用性を維持するために、この動作を無効にすることができます。Developers may want to opt out of this behavior in order to maintain interoperability with their existing SSL3 services OR TLS w/ RC4 services. この記事では、新しい動作が無効になるようにコードを変更する方法について説明します。This article explains how to modify your code so that the new behavior is disabled.