MicrosoftEdgeのアップデートが出来なくなった!
Squidで透過プロキシを構築した後、MicrosoftEdgeのバージョン情報を見ると、
更新プログラムの確認中にエラーが発生している。
トラブルシューティングを読むと「msedge.api.cdp.microsoft.com」への通信を許可しろと書いてるが、ブロックは設定していないので通信は出来るはず。
何が起きた?
状況を調べた結果、TLS Handshakeに失敗している状態だった。
MicrosoftのサーバーでTLSエラー?
どうなっているんだと調べたところ「msedge.api.cdp.microsoft.com」の証明書がMicrosoft発行のものでWindows以外には入っていないもののようだった。
解決する
ここまでわかれば後はこの証明書を通してやるようにするだけ。
まずは証明書を取り出す。
「certlm.msc」で信頼されたルート証明機関を開きMicrosoft発行の物を探す。
今回は「Microsoft Root Certificate Authority 2011」がルートCAになっていたが念のため「Microsoft Root」で始まるものも入れてしまう。
対象の証明書を右クリックし「すべてのタスク>エクスポート」
「Base 64 encoded X.509 (.CER)」形式で保存する
警告
以降の操作を行うと、対象のサーバーのルートCAとして信用されます。
サーバー管理者の責任において行ってください。
ではSquidを動かしているサーバーで証明書を取り込みます。
サーバーはUbuntu 20.04です。
この場合ルートCAは以下の場所に入れます
/usr/share/ca-certificates
直下でもいいのですが、既に/usr/share/ca-certificates/mozilla/*
が入っているようですので
/usr/share/ca-certificates/Microsoft
を作ってそこに入れました。
$ ls /usr/share/ca-certificates/Microsoft
MS_RootAuthority.crt MS_RootCert2010.crt MS_RootCert2011.crt MS_RootCert.crt
CA証明書のリストは/etc/ca-certificates.conf
に記載
$ cat /etc/ca-certificates.conf | grep Microsoft
mozilla/Microsoft_ECC_Root_Certificate_Authority_2017.crt
mozilla/Microsoft_RSA_Root_Certificate_Authority_2017.crt
Microsoft/MS_RootAuthority.crt
Microsoft/MS_RootCert.crt
Microsoft/MS_RootCert2010.crt
Microsoft/MS_RootCert2011.crt
下4行が追加分ですが、mozillaでMicrosoftのも入っているみたいですね。
/etc/ca-certificates.conf
の変更内容が反映させます。
$ sudo update-ca-certificates
Squidの方は再起動せずそのままで大丈夫でした。
解決!
これで無事Edgeの最新版チェックが通るようになりました。
まあWindows限定なら、Windowsに入っているCAで問題ないけど
こんなことも起こるというのは面白い経験。