PowerShellギャラリーにおけるTLS 1.0/1.1サポート廃止の影響は?Microsoft Azure最新機能フォローアップ(113)

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

» 2020年07月07日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「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)。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

画面3 画面3 「Install-Module」や「Update-Module」コマンドレットを実行する前にTLS 1.2の使用を明示的に指定することで回避可能

 例えば、「Az」モジュールを新規インストールするには、次のように実行します。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-Module -Name Az -AllowClobber -Scope CurrentUser

 なお、この方法によるTLS 1.2の明示的な指定は、現在のPowerShellセッション(ウィンドウ)と子ウィンドウのみで有効です。既にエラーが発生している場合は、影響を受けるモジュールが読み込み状態になっているため、エラーが解消しない場合があります。新しいPowerShellウィンドウを開始して実行してください。

TLS 1.2の明示的な指定を省略できる軽減策

 「PowerShell Gallery TLS Support」では、「PowerShellGet」モジュールの更新バージョンをインストールすることで、その都度、TLS 1.2の使用を明示的に指定しなくても問題を回避する軽減策(Mitigation)も示されています。

 具体的には、以下のコマンドラインを1回だけ実行します。1行目は2行目の「Install-Module」コマンドレットの実行時にエラーを回避するために必要です。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
Install-Module PowerShellGet -RequiredVersion 2.2.4 -SkipPublisherCheck

 「PowerShellGet」モジュールの更新後に新しいPowerShellウィンドウを開いて作業すると、「Install-Module」や「Update-Module」コマンドレットはTLS 1.2を明示的に指定しなくても接続エラーは発生しなくなります(画面4)。

画面4 画面4 更新された「PowerShellGet」モジュールはTLS 1.2への自動切り替えに対応しており、明示的な指定がなくてもTLS 1.2が必須となったPowerShellギャラリーに接続できる

 更新された「PowerShellGet」モジュールは、現在のセキュリティプロトコル設定を保存した上でTLS 1.2に切り替え、呼び出し元に戻る際に保存されたセキュリティプロトコル設定を再現することで、問題の発生を抑制します。

 ただし、「PowerShellGet」モジュールの関与しない別のモジュールやコマンドレットでTLS 1.2を必須とする接続(ファイルのダウンロードなど)が発生すれば、接続エラーは発生します。例えば、「Find-Package」コマンドによるパッケージの検索などです。その際、接続エラーやダウンロードエラーに遭遇した場合は、その都度、TLS 1.2の使用を明示的に指定して、問題が解消されないかどうかを確認してください(画面5)。

画面5 画面5 「PowerShellGet」モジュールが関与しない部分ではTLS 1.2必須のサービスやサイトへの接続はエラーになるので、その都度、TLS 1.2の明示的な指定が必要

 古いバージョンのWindowsとWindows ServerのTLS 1.2の対応状況については、「Japan IE Support Team Blog」のアーカイブ記事を参考にしてください。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2019-2020)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。