Posts in category android
SSL中間証明書を改良してAndroidに対応させた
およそ3週間の間多忙で何もアウトプットできていなかったくりすです。
nginx
のSSL証明書をAndroid
上で信頼されないという報告を受けていたのですが、先程対応が完了したのでシェア。
問題
このnginx
上ではRapidSSLを採用しており、その親ベンダはGeoTrust, Inc.であるわけですが、この両者の中間証明書をインストールしないと、一部の端末では証明書が正しく使用できませんでした。
原因
2010年頃からRSA
(1024bit) は暗号強度上の理由から廃止されており、それに伴い諸CA証明書も2048bitに順次入れ替わっております。しかし、これに伴い互換性確保のために中間証明書のインストールが必須となるので、これを正しく設置していない場合SSLエラーが発生するわけです。
気を付けないといけないのは、RapidSSL
の場合はRapidSSL
の中間証明書と、その上位のGeoTrust
の中間証明書の両方が必要であるということです。
対策
RapidSSL
, およびGeoTrust
の中間証明書をそれぞれ入手します。
参考文献の3番目のテキストファイルは、この2つの証明書がバンドルになったものなので、それを引っ張ってくればよいでしょう。$ wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt
- 自分のサーバ用の証明書とこれらを連結します。
# cat /path/to/the/downloaded/RapidSSLCABundle.txt >> /path/to/your/ssl/cert.pem
nginx
を再起動します。# service nginx restart
これだけの手間でしたが、Android 4.0.3
で正常に読み込まれたことを確認しましたので、一安心。
NIST
の文書によると、今年の末までに1024bitのRSA
は廃止され、2048bitに移行するものとされています。
参考文献
- RapidSSLを使うとAndroidで証明書エラーが出た場合 | TechRacho
- RapidSSL - Knowledge Center - SSL Certificates Support
- https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt
- NIST Special Publication 800-131A - Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths (PDF)