Windows Server 2012 R2 TLS 1.2 の問題

Windows Server 2012 R2 TLS 1.2 の問題

Windows Server 2012 R2(アプリケーションWebサーバー、IIS)でTLS 1.2の問題が発生しており、アクセスできません。参考:TLS 1.2 が有効になっていることを確認した後でも、Internet Explorer 経由では TLS 1.2 が無効になります。

同じ OS と同じ OS アップデート (IIS なし) を搭載した別のサーバーがあり、このサーバーは TLS 1.2 を使用して API またはその他のエンドポイントに問題なくアクセスできます。

問題のあるサーバーでは、次のことを試しました。

  1. IISCrypto を使用してすべてを有効にしました -> 再起動 -> 失敗しました
  2. Microsoftのドキュメントに従ってレジストリ設定を手動で変更する -https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2- 失敗した
  3. 次のスクリプトを使用して、TLS 1.2のみを完全にリセットして再度有効にしました。 https://www.hass.de/content/setup-microsoft-windows-or-iis-ssl-perfect-forward-secrecy-and-tls-12- 失敗した

現時点では、私は 3 日以上を費やしてトラブルシューティングを行い、これら 2 つのサーバー間の問題が何であるか、なぜ 1 つの Windows サーバーが動作し、もう 1 つのサーバーが動作しないのかを調べています。

ヒント、トラブルシューティングの手順、ツールなどがあれば、ぜひ教えてください。

スクリーンショット ここに画像の説明を入力してください

  • NuGet CLR経由
  • 問題のあるサーバー上 ここに画像の説明を入力してください
  • 動作するサーバー上 ここに画像の説明を入力してください

答え1

そのため、何時間ものトラブルシューティングを経て、ようやく問題を解決し、TLS 1.2 経由でサーバーから API にアクセスできるようになりました。

私たちのサーバーには.netフレームワークがあり、APIへのアクセスに問題がありました。Microsoftは、SystemDefaultTlsVersionsを強制するために次のレジストリを設定することを推奨しています。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

答え2

私の評判は非常に低いので、回答を書かなければなりません。

ブラウザのメッセージは誤解を招く可能性がある

DNS が同じターゲットを解決しているかどうか、およびクライアントが何らかのプロキシを検出しているかどうかを検証する必要があります。

それらは、透過プロキシを使用したファイアウォールによるパケット検査である可能性があります。

openssl の s_client を使用して、返される応答を検証します。 https://stackoverflow.com/questions/7885785/openssl を使用してサーバーから証明書を取得する

ブラウザの DeveloperTools を使用して「ネットワーク」を確認し、リクエストがどこに送信されたか (おそらくプロキシ経由)、どのような応答が返されたかを確認します。

Powershell で一部の SSL/TLS チェックを無効にします。 https://stackoverflow.com/questions/34331206/ignore-ssl-warning-with-powershell-downloadstring

IPv6 に関して、両方のネットワーク構成が同じであることを確認します。そのため、どちらかが別のサーバーに接続している可能性があります。

編集: 正しい証明書を取得できることを確認するために、少なくとも openssl チェックを実行してください。Powershell の SSL/TLS チェックを無効にしてテストすると、問題を確認するのに役立ちます。

関連情報