RapidSSLを使うとAndroidで証明書エラーが出た場合

みんな大好き、安くて速いRapidSSL!
ところで、最近になってAndroidで以下のような警告が出たことはありませんか?



期限やドメインの設定(wwwの有無など)は問題ありません。

RapidSSLに限った話では無いのですが、暗号の2010年問題といわれるように、RSAの1024ビットは廃止され、発行されるSSL証明書も2010年頃から順次2048ビットのものに入れ替わっています。

それに伴い、互換性などの理由から(ググったりVeriSignのサイトを探すとたくさん情報が出てきます)、たいていの場合、今まで不要だった中間証明書のインストールが必須になりました。

たとえばRapidSSLで証明書を発行した場合、以下のように中間証明書がついてきます。
これは公開されているものと同じです。
というか、ここをよく読めばAndroid2.2以前ではルート証明書入れろと書いてあるんですけど、更新だと見落としますよね;;

SSLサーバ証明書発行通知

**********************************************************
このメールは、ジオトラスト社より自動的に送信されています。
お問い合わせはヘルプデスクよりお願い致します。
このメールに返信頂きましても対応致しかねますのでご注意下さい。
**********************************************************

この度はRapid-SSL.jpをご利用頂き有難うございました。
ご注文いただきましたSSLサーバ証明書の発行が完了いたしましたのでご連絡申し上げます。証明書は、このメールの末尾に表示されていますのでお客様サーバへインストールしてご利用下さい。また、中間証明書のインストールもお忘れになりませんようご注意下さい。

(省略)

==========================
SSLサーバ証明書:

—–BEGIN CERTIFICATE—–
ここがサーバ証明書
—–END CERTIFICATE—–

————————–
SSLサーバ証明書のご利用には以下の中間証明書のインストールが必要です。

中間証明書(INTERMEDIATE CA):
—————————————

—–BEGIN CERTIFICATE—–
ここが中間証明書
—–END CERTIFICATE—–

この設定を忘れる人はあまりいないと思うのですが(設定しないとPCでも警告が出ます)、これだけでは、Android2.2以前の端末で冒頭のエラーが発生します。
(IS03, IS05, SC-02Bなどで発生を確認しました)

Android端末でも警告が出ないようにするには、RapidSSLの中間証明書に加えて、上位のGeoTrustのルート証明書をサーバにインストールする必要があります。

中間証明書が複数階層の場合のインストール方法
GeoTrustのルート証明書
RapidSSLでの設定方法

要するに、SSLCACertificateFile(またはSSLCertificateChainFile)で指定したCA証明書の末尾に、GeoTrustの証明書をくっつけてやる必要があります。

これで、Androidでも警告が出なくなりました!
特に既存サイトを更新する際など、「今まで見られていたのに急にエラーになった!」といったクレームにならないように注意が必要ですね。

GingerBreadしか持っていない人は見落としがちなのでご注意を。

ところで、「RapidSSL」で検索すると「安いSSLで大丈夫ですか?VeriSign」の広告が出るのは露骨ですね・・・

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(15区分 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、CITP、Ruby Programmer Goldなどを保有。

babaの書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ