検索
連載
Microsoft Azure最新機能フォローアップ(113):

PowerShellギャラリーにおけるTLS 1.0/1.1サポート廃止の影響は?

公式ドキュメントや公式ブログのコマンドライン通りに入力したにもかかわらず、「PowerShellギャラリー」からモジュールをインストールしたり、更新したりできないといったトラブルをここ数カ月の間で経験した方はいないでしょうか。恐らくその原因は、PowerShellギャラリーにおける「TLS 1.0/1.1のサポート廃止」に関係しています。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Microsoft Azure最新機能フォローアップ」のインデックス

Microsoft Azure最新機能フォローアップ

PowerShellギャラリーへの接続にはTLS 1.2が必須に

 「PowerShellギャラリー(PowerShell Gallery)」は、「Windows PowerShell」(最新バージョンはWindows PowerShell 5.1)やクロスプラットフォームの「PowerShell Core」(最新バージョンはPowerShell 7.0)で使用するリソース(モジュールやスクリプト)のリポジトリです。

 PowerShellギャラリーを利用すると、Microsoftやコミュニティーが作成したコンテンツを「Install-Module」や「Update-Module」コマンドレットを使用して簡単にインストールしたり、更新したりできます。

 例えば、Azure PowerShellの「Az」モジュールや「Docker Enterprise 3.0」以前(3.1には非対応)のWindows Serverへのインストールを簡素化する「DockerMsftProvider」などのインストールや更新に利用できます。

 TLS(Transport Layer Security)1.0/1.1の実装にはセキュリティ上の脆弱(ぜいじゃく)性があり、多くのWebサイトやサービスでこれらのセキュリティプロトコルのサポートが廃止されています。以下のMicrosoftのアナウンスにあるように、PowerShellギャラリーについては2020年4月にこれらのセキュリティプロトコルのサポートが廃止されました。現在は、TLS 1.2を使用する必要があります。

 「Windows 10 バージョン1809」以降と「Windows Server 2019」以降は、TLS 1.2に標準で対応しており、PowerShellギャラリーにおけるセキュリティ強化の影響は受けません。

 しかし、それ以前のバージョンのWindowsとWindows Serverについては、既定のセキュリティプロトコルがSSL(Secure Sockets Layer)3.0とTLS 1.0に設定されているため、そのままではTLS 1.2を要求するサービスへの接続やファイルのダウンロードに失敗します。

 「Install-Module」や「Update-Module」コマンドレットは、現在、TLS 1.2を使用しなければPowerShellギャラリーに接続することはできず、次のようなエラーで失敗します(画面1画面2)。

PowerShell ギャラリーは現在利用できません。後でやり直してください。

インターネット接続を確認してください。

画面1
画面1 Windows Server 2016に「Az」モジュールを新規インストールしようとしたところ
画面2
画面2 Windows Server 2016で「DockerMsftProvider」モジュールをアップデートしようとしたところ

 この問題は、サポートライフサイクル期間中の以下のWindowsとWindows Serverに影響します。

  • Windows Server 2016
  • Windows 10 バージョン1803(EnterpriseおよびEducation)
  • Windows 10 バージョン1709(EnterpriseおよびEducation)
  • Windows 10 バージョン1607(Windows 10 Enterprise 2016 LTSB)
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2(拡張セキュリティ更新プログラム)
  • Windows 8.1
  • Windows 7(拡張セキュリティ更新プログラム)

その都度、TLS 1.2の使用を明示的に指定することで回避可能

 この問題は、「Install-Module」や「Update-Module」コマンドレットを実行する前に現在のPowerShellセッション(ウィンドウ)で以下のコマンドラインを実行し、TLS 1.2の使用を明示的に指定することで簡単に回避できます(画面3)。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る