Chromeで、サーバ証明書検証時にネットワークから取得した時刻を使う

Chrome Canaryで『Network Time for Certificate Verification』という機能を有効にできます。これは、サーバ証明書を検証する際に、PC端末の時刻ではなくネットワークから取得した時刻を使って検証するようにする機能です。

これまでの挙動

これまでの挙動としては、サーバ証明書時に時刻上の問題がある場合、『端末の時刻がズレている』というエラーが出ます。

どうやって端末の時刻がずれていると識別するかは、「Where the Wild Warnings Are: Root Causes of Chrome Certificate Errors」に掛かれています。Googleのサーバに接続し、時刻を取得します。このとき、Chromeにハードコードされた公開鍵を使用するため、時刻がズレてても正しくGoogleのサーバを信頼できます。( 該当ソースコードURL )

(論文にも掛かれていますが、証明書のエラー原因としてクライアントの時刻設定ミスがそれなりにあるようです。)

『Network Time for Certificate Verification』

chrome://flags/ より、機能を有効にできます。

有効にすると、端末の時刻がズレていても証明書エラーが出なくなります。
(初回の証明書エラー時に時刻をフェッチしに行くのか、初回だけエラーがでますが、その時刻はキャッシュされるようなのでほかサイトでも問題なく閲覧できるようです。)

ネットワークから取得した時刻で証明書エラーになった場合は、端末の時刻を利用するため、意図的に未来や将来の証明書を試す場合も問題なさそうです。

今後

今後、この機能がどう有効化されていくかは、今のところ情報はなさそうです。