GPKI(apca)のSSL証明書は安全ではない？？

#1.はじめに
予てからChrome68がリリースされた際に記事にしようと決めていた題材です。

Chrome68からSSL化されていないサイトの場合、「保護されていません」と警告が出る様になりました。

Googleは常時SSL化を提唱しており、SSL化されているWebサイトは検索順位が優遇されているにも関わらず、2018年07月28時点においてもGoogleの検索結果の最上位に非SSLサイトが表示されることがあります。

そう、官公庁のサイトです。

今回はなぜ官公庁のサイトで非SSLサイトが検索結果として表示されるか考察致しました。

#2.官公庁サイトのSSL化について
多くの官公庁では[政府認証基盤(GPKI)](http://www.gpki.go.jp/)のApplicationCA2 Root(apca)という認証局が発行したSSL証明書を使用してSSL化しておりました(過去形)。

以下が証明書です。
ApplicationCA2 Rootが発行者であることを確認できます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/238146/db193561-a488-2559-220a-60ebdae43c13.jpeg" width=30%>

#3.政府御用達の認証局があるのにSSL化されたサイトは無いの？？
あるにはあります。
ただ、apcaの証明書には問題があり、一部のブラウザにおいてルート証明書がデフォルトでインストールされておりません。

証明書がインストールされていないブラウザで、SSL化されたサイトに接続すると以下のような警告が出てきます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/238146/8a4375f2-3bb3-a01a-e384-fc078086d6cc.jpeg" width=30%>


#4.なぜ検索結果に非SSLサイトのリンクが表示されるの？？
ルート証明書がデフォルトでインストールされていない場合、手動でインストールする必要があり、すべての人間が手動で証明書をインストール出来るとは限りません。
多くの人が検索サイトから官公庁のサイトに行くと思われますので、一々警告が出ていてはクレームものです。
そこで検索結果に非SSLのリンクが張られているのではないかと推察しています。

#5.なぜapcaのルート証明書はブラウザにデフォルトでインストールされていない？
簡単に言うと、2013年から2017年にapcaが発行した証明書がBaseline Requirementに準拠していないにも関わらず、apcaが該当の証明書を削除しなかったからです。
※Baseline Requirementについては、[小悪魔女子大生のサーバエンジニア日記](http://co-akuma.directorz.jp/blog/2012/05/baseline-requirement%E3%81%A8%E3%81%AF%EF%BC%9F/)に分かりやすく纏められています。

Mozillaのバグ管理システムであるBugzillaにmozillaとapcaとの奮闘記があります。
[Bug 870185](https://bugzilla.mozilla.org/show_bug.cgi?id=870185)

mozilla 「問題のある証明書は削除するべきだ。」
apca    　「(mozillaから)指摘のあった証明書は期限が切れて再発行されるから、いずれ問題は解決されるぜ」
mozilla 「(話にならん)別のところで議論済で、要求は却下されたわ！」

という感じでしょうか。
完全に怒らせて議論の余地も無くなってしまったようです。
<img src="https://qiita-image-store.s3.amazonaws.com/0/238146/96c9071f-9f7d-3887-415c-b858e9919895.jpeg" width=30%>

#6.mozillaの対応は塩対応？？
GoogleはSymantecが発行した証明書を順次失効させると発表しています。
この対応を参考にするとmozillaの対応は、至って普通だと考えられます。

#7.apcaの証明書を使用している官公庁について
2018年07月28日時点でapcaの証明書を使っている官公庁を見つけることが出来ませんでした。
過去には総務省やハローワークがapcaの証明書を使用していました。
chrome68リース後に、一部の官公庁ではSSL化されたサイトを削除しているようです。

奇跡的に総務省統計局のサイトで警告が出ている画面キャプチャがありました。
<img src="https://qiita-image-store.s3.amazonaws.com/0/238146/5c04c23a-9da0-1571-a082-c6ead2789748.png" width=30%>

#8.官公庁のサイトはSSL化を諦めた？
そんな事はありませんでした。
多くのサイトでKasperskyが発行した証明書に切り替ってっています。
ただ、総務省やGPKIもKasperskyの証明書に切り変わっていますが、替えたくなかったのでしょうね…
総務省が作ったシステムにも関わらず、自ら使わないと決めた事に驚きを隠せません。

#9.GPKI(apca)のSSL証明書は安全ではない？？
GPKIのサイトでapcaのルート証明書をダウンロード出来ます。
chrome68リリース前後で状況が違うため、以下に証明書を安全にダウンロード出来ているか纏めました。

| 時期 | HTTP経由のDL | HTTPS経由のDL |
|:-----------|:------------:|:------------:|
| chrome68リリース前 | 安全ではない | 安全ではない |
| chrome68リリース後 | 安全ではない | 安全 |

それでは、各項目の理由です。

- 9.1 chrome68リリース前かつHTTP経由のDL

非SSLの為、第三者が改ざんしている可能性やなりすましの可能性がぬぐい切れません。

- 9.2 chrome68リリース前かつHTTPS経由のDL

GPKI自身のサイトがapcaが発行したSSLサーバ証明書を利用していました。
[「3.政府御用達の認証局があるのにSSL化されたサイトは無いの？？」](#3.政府御用達の認証局があるのにSSL化されたサイトは無いの？？)に記載した通り、一部のブラウザでアクセスすると警告が表示されます。
安全ではないサイトからダウンロードしたファイルが安全とは言い切れません。

- 9.3 chrome68リリース後かつHTTP経由のDL

非SSLの為、第三者が改ざんしている可能性やなりすましの可能性がぬぐい切れません。


- 9.4 chrome68リリース後かつHTTPS経由のDL

Kasperskyにて発行されたSSLサーバ証明書を使用して安全であることが担保されておりますので、改ざんされていないルート証明書がダウンロード出来るでしょう。


#10.おわりに
FireFoxにapcaのルート証明書がデフォルトでインストールされていない問題はまだまだ解決しそうにありませんが、chrome70からは非SSLサイトにアクセスすると赤色で警告されるようなので、Kasperskyへの移行が間に合うといいですね。