2020/06/30

"PowerShell ギャラリーは現在利用できません”の原因と回避

Windows Server 2016 でひさびさんび Docker 関連の更新を確認しようと、PowerShell ギャラリーの DockerMsftProvider を利用しようとしたら、
“Get-PSGalleryApiAvailability: PowerShell ギャラリーは現在利用できません。後でやり直してください。” 
"インターネット接続を確認してください“
ときた。後でやり直しても解消せず、試行錯誤していましたら、PowerShell ギャラリーがこの 4 月の TLS 1.0 と TLS 1.1 のサポートを廃止したことが影響していたらしい。

(※PowerShell ギャラリーからのインストールや更新ってめったにしないので、あとあと遭遇するとわけわかんなくなると思うので、ちゃんとしたメディアで記事にするつもり。とりいそぎの以下はメモ。私は 2 か月ほど PowerShell ギャラリーとは距離があったようでいままで気付かなかった。)


PowerShell Gallery TLS Support
https://devblogs.microsoft.com/powershell/powershell-gallery-tls-support/

DockerMsftProvider の問題ではなく、Update-Module や Install-Module が古いセキュリティ プロトコル(たぶん TLS 1.0)で接続しようとしてたから動いていたから。Windows 10 ver 1803 以前や Windows Server 2016 の .NET Framework の既定の TLS プロトコルは Ssl3 と Tls(TLS 1.0)。Windows 10 ver 1809 以降は Tls12(TLS 1.2)に既定で対応しているので影響しない。

回避策 1

最も簡単な回避策は、以下のように現在のセッションで Tls12 を強制すればよい。モジュールが読み込まれる前に実行しないと、中途半端にエラーが出るので、新しい PowerShell ウィンドウで実行すること。


PS C:¥> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:¥> Install-Module や Update-Module のコマンドライン


回避策 2
 
また、PowerShell Gallery TLS Support  に書いてある回避策(Mitigation)を実施して再起動すると、Ssl3 と Tls のままでもエラーにならなくなります。

PS C:¥> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:¥> Install-Module PowerShellGet -RequiredVersion 2.2.4 -SkipPublisherCheck
PS C:¥> Restart-Computer -Force

この回避策(軽減策)は、PowerShellGet モジュール内で一時的に Tls12 に切り替えてる(で終わったら元の設定に戻す)ので、インストールやアップデート対象によっては、この回避策だけではダメな場合もある(wget による TLS 1.2 サイトからのダウンロードとか)。その場合はやっぱり Tls12 をその都度指定する必要あり。

回避策 3?
 
かなり面倒い操作だけど、既定のプロトコルを変更しちゃうって方法でもいけるかも(私は未確認)。

.NET Framework で TLS1.1 および 1.2 を有効化する方法 -まとめ-
https://docs.microsoft.com/ja-jp/archive/blogs/jpieblog/net-framework-tls11-12-2

2018 年にあった似たような話。
Invoke-WebRequest で Live.Sysinternals.com からダウンロード失敗の回避 (2018/11/06)


1 件のコメント:

  1. 古い TLS バージョンの廃止は、Server Essentails の remoteaccess.com の DDNS 更新にも影響するらしい。

    Are the problems with remotewebaccess.com domain and Dynamic DNS service?
    https://docs.microsoft.com/en-us/answers/questions/318584/are-the-problems-with-remotewebaccesscom-domain-an.html

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。