TLS 1.1 無効化に関するご案内
業界のベストプラクティスに従い、ドキュサインは脆弱な暗号化方式の削除を2021年1月12日に予定しており、2021年6月9日に TLSv1.1 を無効化します。本ブログでは、ドキュサインと安全に統合・接続するための、最新の TLS プロトコルと暗号スイートについてご案内します。
(本ブログは、2020年10月7日に公開された「Preparing for TLS 1.1 removal」の抄訳版になります。)
業界のベストプラクティスに従い、ドキュサインは脆弱な暗号化方式の削除を2021年1月12日に予定しており、2021年6月9日に TLSv1.1 を無効化します。本ブログでは、ドキュサインと安全に統合・接続するための、最新の TLS プロトコルと暗号スイートについて紹介します。
PCI Security Standards Council は、PCI データセキュリティ基準(PCI DSS)への準拠を希望する企業は、2020年6月までに TLS 1.2 へ移行することを義務付けています。TLS 1.1 と弱い暗号スイートは、SOAP または REST API を使用してレガシー統合をしているごく一部のお客様に利用されています。これらの統合は、より安全で、新しいプロトコルと暗号化をサポートするためにアップデートが必要となりますが、それらは更新されたライブラリを使用してのソリューションの再コンパイルや、設定ファイルを更新するなどの簡単なものです。
Web アプリケーションで TLS 1.2 を設定することも可能ですが、Web サーバに TLS 1.2 を最低限のセキュリティレベルとして強制的に設定することもお薦めします。以下の Microsoft のリソースもご利用いただけます。
旧版の .NET アプリケーション (4.0 や 4.5 などの古いバージョンの .NET Framework でコンパイルされたもの) は、TLS 1.2 サーバーの普及に伴ってそれらとの接続に問題を経験されていることも多いことと思われます。特に .NET Framework の最新バージョンをインストールするだけでは解消されず、そのプロジェクトをコンパイルした際に用いられたバージョンによって、 TLS ハンドシェイクで選択されるTLSバージョンのサポートに影響を与えるケースが見受けられます。
対処法の1つとして、お使いのプロジェクトを .NET 4.7 以降に対応するようアップデートすることが挙げられます。この場合、.NET 4.7+ アプリケーションは自動的にオペレーティングシステムが安全だと判断したもの(現在はTLS 1.2に対応済で、今後TLS 1.3 対応予定) をデフォルトとするので、他に何もする必要はありません。ただし、アプリケーションの再コンパイルは必要となるため、実際には難しい場合もあるかもしれません。もしくは、アプリケーションの再コンパイルをすることなく、システムのデフォルトの TLS バージョンを強制的に使用させることも可能です。(その場合、ServicePointManager を通じて SSL/TLS のバージョンを設定していない場合に限ります。)
もう1つの解決方法は、アプリケーションに関連付けられたコンフィグファイルをアップデートする方法です。作業自体は簡単ですし、影響範囲も最小限です。まずは、アプリケーションの実行ファイルに関連付けられたコンフィグファイルを検索します。「アプリケーション名.exe.config」 などのファイル名がよく使われています。もし見つからない場合は、ファイルを新規作成してください。ファイルを発見、もしくは新規作成したら、 TLS 1.2のサポートに必要な互換性スイッチを有効にするために、コンテンツを更新してください。
解決策として startup.cs や Global.asax など、パイプラインの早い段階に以下を含めることもできます。
もしくは、アプリケーション全体ではなく一部のリクエストに対してのみ指定する場合は、HttpClient の HttpClientHandler をカスタマイズすることもできます。
移行をより簡単にするために、Microsoftは「.NET Framework でのトランスポート層セキュリティ (TLS) のベスト プラクティス」というサマリを公開して、レガシー TLS バージョンに関係するハンドシェイクエラーを回避するための解決策をリストアップしています。
どんな暗号が使われているのか?
どのような暗号が使われているのかは、物理的に見るか、優秀なテレメトリーを使わない限りは判断が難しいところです。以下に私が試したことがある方法をいくつかご紹介します。
Wireshark を使用して、暗号スイートのネゴシエーションを監視およびキャプチャできます。ディスプレイの上部ペインで Client Hello パケットを選択して、提供されている暗号スイートのリストにドリルダウンします。
Windows Server PowerShell で、Get-TlsCipherSuite (英語) コマンドレットを使用します。
Nmapは、リモートエンドポイントで暗号をキャプチャすることができます。nmap --script ssl-enum-ciphers -p 443 www.docusign.net
SSL Labs は、サーバまたはクライアントごとに利用可能なすべての TLS と暗号をリストアップすることができます。 https://www.ssllabs.com/ssltest/analyze.html?d=account-d.docusign.com
TLS 1.2以上への切り替えを行うと、データの保護においてより効率的で安全なプロトコルと暗号を取り入れることができます。