私の.NET Webサービスから、TLS 1.2を強制しようとしている別のWebサービスに接続するには、TLS 1.2を使用する必要があります。私は.NET 4.6がデフォルトでTLS 1.2を使用すると言っているリソースを見つけたので、それは最も簡単な解決策のように聞こえました。サーバー上の.NET Frameworkを更新して再起動しました。 IISでは、.NET 4.6を使用してアプリケーションプールを作成しようとしましたが、4.0が唯一の選択肢でした。それから、4.6は.NET 4.0に対する「インプレース」アップデートであるため、それでも4.0と表示されるということがわかりました。だから私は多分私はやったと思った。しかし、私が無関係の理由で得たエラーページでは、それは私が正常にアップグレードされていないようですのでMicrosoft .NET Framework Version:4.0.30319
を言った。自分のアプリケーションプールが.NET 4.6を使用していることを確認する方法、またはより一般的にはTLS 1.2を有効にする方法についての任意のポインター。
TLS 1.2を許可するために、実際には.NET Webサービスを4.6にアップグレードしました。
Artemが言っていることは私達がした最初のステップでした。 Webサービスのフレームワークを4.6に再コンパイルし、TLS 1.2を有効にするようにレジストリキーを変更しようとしましたが、これはうまくいきませんでした。接続はまだTLS 1.0のままでした。また、SLL 3.0、TLS 1.0、またはTLS 1.1をマシン上で許可したくありませんでした。他のWebサービスがこれを使用する可能性があります。変更をレジストリにロールバックしました。
実際にWeb.Configファイルを変更してIISに伝えました。「ちょっと、4.6で実行してください」.
.NET 4.6のweb.config +再コンパイルで追加した変更は次のとおりです。
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
<authentication mode="Windows"/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
また、IISは4.6でWebサービスを実行し(明示的に)、4.6はデフォルトでTLS 1.2を使用するため、接続はTLS 1.2に変更されました。
Webサービスクライアントをインスタンス化する前に、次のコードを追加してください。
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
TLS 1.1以前との後方互換性のために:
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
4.5より前の.Netを使用している場合は、列挙型にTls12が含まれないため、状態は明示的に言及されます here
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
必要な3つのステップ:
レジストリにEnabled=0
とDisabledByDefault=1
を追加して、サーバーマシン上でSSL2.0、TLS1.0、TLS1.1を禁止として明示的にマークします(フルパスはHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
)。詳細は画面を見てください
1の手順に従って、明示的にTLS1.2
を有効にします。それぞれEnabled=1
とDisabledByDefault=0
を使用します。
注:サーバのバージョンを確認してください:Windows Server 2003
はTLS 1.2
プロトコルをサポートしていません
@ John Wuが上記で提案したように、TLS1.2
をアプリレベルでのみ有効にします。
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
このガイドがお役に立てば幸いです。
_ update _ @Subbuが述べたように: 公式ガイド
私のために働いた:
ステップ1:https://www.Microsoft.com/en-us/download/detailsからWeb Installer exeをダウンロードしてインストールしました.aspx?id = 48137 アプリケーションサーバー上。インストールの完了後にアプリケーションサーバーを再起動しました。
ステップ2:web.configに以下の変更を追加
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
</system.web>
ステップ3:ステップ1と2を完了すると、エラーが発生しました、「 WebForms UnobtrusiveValidationModeには 'jquery'のScriptResourceMappingが必要です。jquery(case-sensitive))という名前のScriptResourceMappingを追加してください。このエラーを解決するには、以下のキーを追加しますappsettingsmyweb.configファイル
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>