SSL証明書の更新でAndroid2.3以下がセキュリティエラーになる

SSL証明書の更新でAndroid2.3以下がセキュリティエラーになる
■ 店頭より得で、予約しやすいオンラインショップ。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE

弊社では、ドメインとSSLの更新を、指定日に一括で行うようにしています。

これは、少人数で100以上のドメインとそれに伴うSSL証明書を運用するにあたり、スケジュール管理ミス=更新ミス(最悪、サービス停止)が発生するトラブルを回避する為です。

もちろん、複数人で、日々更新チェックを行うという策も考えられましたが、少人数でうまくまわす為に、昨年購入したドメインとSSLを一括で1月のタイミングで行う方が、多少の金額がかかったとしても、リスクは少ないと判断していました。

がー
コレが裏目に出ました。Android2.3以下の一部の機種がセキュリティエラーになる事象が発生したのです。全証明書で。

今後、同様の問題に突き当たる人が多いと思いますので、顛末の一部始終を残しておきたいと思います。

証明書の更新が原因でセキュリティアラート

それは、SSLの更新が完了したタイミング(2015年1月)で発覚しました。

社内の別部署から、一部のAndroid端末(Android 2.3.x)で、サービスが正常に起動せずに、セキュリティアラートが発生しているとの報告が入りました。

サーバ管理者は、事前に、SSL証明書のWEBサイトで、動作対象端末は確認し、対応状況も調査済みでした。
そこには、「Android1.5以上やAndroid2.3以上」という記述があったので、「問題が無し」という事で更新したのですが、実際には一部の古いAndroid1.5以上やAndroid2.3以上でエラーが発生。もちろん、更新直前には正常稼働していたバージョンです。

【エラーの想定要因】

  • 中間証明書(かつてAndroid端末では中間証明書の問題で警告がでる問題があった)
  • サーバーならびにLBの設定ミス
  • ネットワーク機器のトラブル

全て確認してみましたが、どうやら設定ミスではなさそう。となると、セキュリティアラートはやはり「更新した新規のSSL証明書」が原因としか考えられません。

さて、困った。正しい証明書を取得し、運用実績もあり、正しい設定で動いているのになぜ、今回に限ってエラー?

端末検証

そこで、スタッフ総動員で古いOSのまま残してある検証端末で、総当たりチェック。
その結果、今回の問題の全体像が見えてきました。

Galaxy s2(2.3.3) → ×
Galaxy s2(2.3.6) → ○
Nexus one(2.3.7) → ○
ArrowsZ(2.3.5) → ×
Xperia(2.3.4) → ○

Android2.3.xを調べていて、問題のない端末もあったため、端末の製造元会社にも依存している可能性もあることも判明しました。

証明書の対象端末について

ベリサイン

2015012301
https://knowledge.symantec.com/jp/support/ssl-certificates-support/index?vproductcat=V_C_S&vdomain=VERISIGN.JP&page=content&id=SO23044&actp=search&viewlocale=ja_JP&searchid=1389342973989&locale=ja_JP&redirected=true
「アクセスカバー率99% Android OS」としか書かれていませんが移行スケジュールは別途有ります。

ハッシュアルゴリズムのSHA-1からSHA-2への移行に関して

GeoTrust

2015012302
https://www.geotrust.co.jp/products/sha2-migration.html#page3
Android 1.5以上と書かれていますが、実際には正常に証明書を読み込めない機種があります。

ジオトラストSHA-2対応版証明書の取扱い開始とSHA-1版証明書提供終了に関するお知らせ

サイバートラスト

2015012303
https://www.cybertrust.ne.jp/SureServer/file/docsample/SmartPhone.pdf
※スクリーンショットは2015年1月現在。
機種がかなり書かれています。この検証クオリティは凄い!見習うべき内容だと思います。

SHA-1証明書の受付終了と、SHA-2証明書への移行について

という事でサイバートラストさんの実装状況の検証が参考になります。

なぜ、仕様変更が?その原因。

昨年、SSL証明書における脆弱性問題で、「SSLv3 プロトコルに致命的な脆弱性がある(通称「POODLE」)」と、Googleが発表して、WEBサービス業者やサーバー管理者に衝撃を与えました。

【参考】SSL 3.0に深刻な脆弱性「POODLE」見つかる Googleが対策を説明 ITmedia

確かにSSLについては、サーバー管理者以外は社内でもあまり深い知識もなく、「POODLE」の重要さは、伝わりにくかった・・・が、今回、会心の一撃をくらった感じです。

Microsoftは2013年11月12日に「認証局に要求するルート証明書のポリシーをより強固で安全なものにするよう変更する」と発表しており、2017年1月1日以降、SHA-1ハッシュアルゴリズムで生成されたSSLサーバ証明書は受入れが中止されます。

http://www.watch.impress.co.jp/headline/docs/kyodonews/domestic/20140910_666034.html

そして、SSL証明書の発行会社が昨年11月以降、SHA-2を必須対応とし、多くが2015年12月31日でSHA-1のサポートを切るとしていた事が今回の原因と思われます。

実際には2015年1月の証明書は認証局各社のスケジュールでSHA-1非対応になっているのです。

2015年1月1日以降に更新の証明書は「一部のAndroid1.5やAndroid2.3ではセキュリティエラーとなります」(某販売会社も購入画面に書いといて下さいよ。事前にアナウンスするからさ〜。。。)

そう、私たちはSHA1が使用不能な新仕様の証明書でしか購入できないタイミングで更新してしまったわけです。orz… そりゃ、エラーになりますよね。
※Android 2.3.xの一部の機種が対象なので、影響範囲はかなり微々たるものですが・・・

今後、買う証明書は全てそうなっていると思われ、強制移行は始まっています。
いやー更新期限1年以上の証明書は、逆算し続けて注意しないと怖い怖い。

僕たちで出来る事はほとんどなかった。

とりあえず、どういう対策が可能か考えてみました。

・対応しているSSL証明書に切り替える

→残念ながら、SHA-1でのSSL証明書の発行は制限されており、SHA-2に対応しなければ将来的に全OS,ブラウザでエラーが出ることになる

・対象のSSL証明書の中間証明書で対応させる。

→各社でそんな便利な証明書など発行されていないため、現実的に不可能

・サービスでAndroid2.3以下をSSL非対応にする。

→これしかありませんでした。

つまり、端末メーカーが対応しない限り一部のAndroid端末ではSSL通信に著しい不具合が出続けるかも知れないという事です。そもそも、メーカーはセキュリティ脆弱性を抱えたブラウザを更新しない可能性すらあります。

Androidの黒歴史、メーカーに自由な仕様のスマホブラウザを実装させてしまった問題、AndroidのOS更新が難しい端末がある問題、短期間にサポート外に追いやられた問題がここでも露呈した形になります。

今後想定される事象

弊社に限らず、今後、SSL証明書を更新した時点で、そのサイトのSSLページで、
「このサイトのセキュリティ証明書は、信頼できる機関からのものではありません」
と表示されてしまう可能性が残ります。

まるで、フィッシングサイトのようになってしまいます。
本家サイトであるにもかかわらず・・・大問題です。
こんな警告が、個人認証のページで表示されたら・・・
ECのカード番号の入力ページで表示されたら・・・

メーカーが更新し、ユーザー側の端末でOSのアップデートを行う以外には、手がなさそうなので、簡単には解決できそうにない気がします。

恐ろしいですね。

そもそも、脆弱性のある端末を利用し続ける事の方が問題なので、サービス提供側はそうした問題に際して、注意喚起をして行く事も重要だと痛感しました。そして、更新スケジュールにもね。

今後の動向も注意して見ていくことにしましょう。

■最新のiPhoneの購入・機種変更なら店頭より得で、予約しやすいオンラインショップ。
機種の頭金や使わないオプションパックをつけて年間何万円も損していませんか?
オンラインショップなら故障のサポートもしっかりしていて最低限の費用。待たされることもありません。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE
がお得です。