🥚

Androidに導入していたプロキシの証明書がブラウザで証明書エラーになった件

2022/04/02に公開

Androidに導入していたプロキシの証明書がブラウザで証明書エラー(NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED)になった件

注意事項

  • 本手順は、あくまで自身の環境下で現象回避のために実施した手順のメモとなります。
    • 普遍的な対応策や回避策ではない可能性が高いため、本記事を参考される場合はご留意ください。

TL;DR

  • Chromeなら、v98以下にすれば(恐らく)回避できる。
    • 適用対象によっては回避できないため。

背景

  • ある日、普段通りにOWASP ZAPとAndroidブラウザ(Google Chrome)を使ってプロキシテストしようとした時、下記のエラー画面が表示されました。

  • プロキシ証明書をどこかで無効化してしまったかと思い、システム証明書を確認したら、きちんと有効期限内のものを有効化設定している状態でした。

原因

  • Android版Chrome v99のリリースノートに、下記のような記載がありました。

    Android で Certificate Transparency(証明書の透明性)の対象を拡大
    デスクトップ プラットフォームと一部の Android ユーザーについては、Certificate Transparency(証明書の透明性)がすでに適用されています。Chrome 99 では、Certificate Transparency(証明書の透明性)の対象が Android 版 Chrome のすべてのユーザーに拡大されます。
    Chrome Enterprise リリースノート - Chrome Enterprise and Education ヘルプ

  • → 上記で発生したエラーは、Certificate Transparencyにより、プロキシ証明書が不正な証明書(証明書の透明性に問題あり)と検出されたことによるものです。

    • 「NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED」が出ているため、そこからでも確認できます。
  • 現在インストールされているChromeのバージョンを確認したら、「バージョン99.0.4844.88」でした。

    • → v99で拡大したCertificate Transparencyの影響を受けていると考えられます。

    • ※ 端末の都合で、APKPureを使用してインストールしています。

Certificate Transparency(証明書の透明性)とは何か

  • 認証局での誤発行や、悪意のある攻撃によって不正に発行された証明書を検出する仕組みのこと。
    • 2010年代初期に発生した、証明書関連の問題を受けて、Googleが提唱し、RFC 6962で標準化されました。
    • 現在はバージョン2として、RFC 9162が存在しています。

対策(回避策)

  • Chromeのバージョンをv98へロールバックさせます。
    • v98のAPKをAPKPure経由でインストールします。

    • v98をインストール後、v99では証明書エラーが出たYahooを開くと、証明書エラーが発生せずにページが表示されます。

余談

  • 最近何かと取り上げられているFirefoxだと、予想に反して、Chrome以上に厳しいようです。
    • 執筆時点(2022/03/27)でAPKPure上から遡れる最古のバージョンv95.2.0でも下記の通り、証明書エラーとなりました。

    • Firefoxだと、具体的な証明書エラーコードが出ないのでわかりにくいですが……。



参考

Discussion