Microsoft WinGet Package Manager がダウン:CDN の SSL 期限切れが原因

Microsoft WinGet package manager failing from expired SSL certificate

2023/02/11 BleepingComputer — Microsoft WinGet Package Manager で発生した問題は、WinGet CDN の SSL/TLS 証明書の有効期限が切れた後の、パッケージのインストール/アップグレードに関するものだ。2020年5月にオープンソースとしてリリースされた Windows Package Manager (WinGet) は、コマンドラインからユーザーが、ダイレクトにアプリケーションをインストールするためのものだ。

CDN の SSL 期限切れで WinGet がダウン

2月11日の土曜日の深夜から、WinGet 経由でアプリをインストール/アップグレードすると問題が発生するという、Windows ユーザーから報告が始まった。WinGet ユーザーの Tiger Wang が GitHub で公開した、以下のような単純な WinGet コマンドを実行すると、コマンドラインで “InternetOpenUrl() failed “というエラーが発生するスクリーンショットである。

winget upgrade --all --verbose.

Users report errors while using WinGet
WinGet の使用中にエラーが発生したというユーザーからの報告 (GitHub)

この報告には、同じ問題を経験した他のユーザーのコメントも寄せられている。この問題は、WinGet CDN の SSL/TLS 証明書が有効期限切れになっていることに関連しているようだ。

BleepingComputer が Chrome で CDN の URL https://cdn.winget.microsoft.com にアクセスしたところ、以下のエラーを受け取った。

WinGet CDN SSL expiration
WinGet CDN の SSL/TLS 証明書の有効期限切れの警告 (BleepingComputer)

この警告と証明書の詳細の2点から、WinGet CDN の証明書が週末に有効期限を迎えていることが確認された。

SSL expiry date
証明書の有効期限は GMT+05:30 で表示される (BleepingComputer)
一時的な解決策とは?

Microsoft が SSL 証明書を更新するまでの間、この状況に対処する別の回避策がある。それは、cdn.winget.microsoft.com だけに依存しているのではなく、以下のソース URL を WinGet のソースリストに追加するものだ。そうすれば、WinGet は、この代替サーバからパッケージを取得できる。このサーバは、執筆時点で有効な証明書を持っている。

GitHub ユーザーの qilme は、「以下のコマンドを使って、たとえば https://winget.azureedge.net/cache のようなソースを追加できる」とアドバイスしている。

sudo winget source add -n winget https://winget.azureedge.net/cache

Winget ツールの source コマンドは、ユーザーによる Windows  Package Manager ソースの管理を可能にする。source コマンドを使用すると、WinGet で使用するリポジトリの追加/リスト/編集/削除/リセット/エクスポートなどが実行できるようになる。

注意:上記のコマンドを実行する際に、PowerShell で管理者アカウントによりコマンドが実行されている場合には ‘sudo’ は必要ない。エラーが発生した場合は、新しい azureedge リンクを追加する前に、デフォルトの WinGet ソースを削除する。

問題の azureedge URL は WinGet の CDN のエイリアスだが、有効な証明書があるために、WinGet 開発者にとって有効なソリューションとなる。

nslookup DNS query for WinGet CDN
WinGet CDNのホスト名に対する ‘nslookup’ の結果 (BleepingComputer)

Microsoft がプライマリ CDN の証明書を更新したら、ユーザーはオプションとして、別のコマンドを実行してソース URL のリセットを選択できる。GitHub ユーザーである Adam Langbert は、「デフォルトに戻したいときには、いつでも winget source reset –force (as admin) を実行できる」とアドバイスしている。

2022年11月に WinGet は、CDN がクエリーを実行した際に0バイトのデータベース・ファイルを返したことに起因する、広範な障害を発生している。

WinGet ってなんだろうと思い、調べてみたら「winget ツールを使用したアプリケーションのインストールと管理」というドキュメントがありました。そこには、「winget コマンド ライン ツールを使用すると、Windows 10/11 コンピューター上でアプリケーションを検出/インストール/アップグレード/削除/構成することが可能。 このツールは、Windows パッケージ・マネージャー・サービスに対するクライアント・インターフェイスである」と記されています。SSL/TLS 証明書の有効期限切れというのは、たまに、よく聞く話ですが、Microsoft もやるんだと思ってしまいました。

%d bloggers like this: