web-dev-qa-db-ja.com

TLS 1.2を使用するように.NET Webサービスを更新します。

私の.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を有効にする方法についての任意のポインター。

55
nasch

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に変更されました。

81
Etienne Faucher

Webサービスクライアントをインスタンス化する前に、次のコードを追加してください。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

TLS 1.1以前との後方互換性のために:

System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12; 
44
John Wu

4.5より前の.Netを使用している場合は、列挙型にTls12が含まれないため、状態は明示的に言及されます here

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
14
bresleveloper

必要な3つのステップ:

  1. レジストリにEnabled=0DisabledByDefault=1を追加して、サーバーマシン上でSSL2.0、TLS1.0、TLS1.1を禁止として明示的にマークします(フルパスはHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols)。詳細は画面を見てください registry

  2. 1の手順に従って、明示的にTLS1.2を有効にします。それぞれEnabled=1DisabledByDefault=0を使用します。

注:サーバのバージョンを確認してください:Windows Server 2003TLS 1.2プロトコルをサポートしていません

  1. @ John Wuが上記で提案したように、TLS1.2をアプリレベルでのみ有効にします。

    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

このガイドがお役に立てば幸いです。

_ update _ @Subbuが述べたように: 公式ガイド

12
Artem

私のために働いた:

ステップ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>
3
KRM