Android https ssl証明書構成(okhttpを使用)
1550 ワード
本文はokhttpを使う時にhttps証明書を配置する方法を紹介して、証明書の原理とSSLプロトコルについて本文は紹介しないで、必要な学生は自分で調べます.https証明書の一般的なエラーは、すべての証明書を信頼することです.https証明書は、モバイルアプリケーションでよく見られる問題は、証明書が期限切れになってもクライアントがタイムリーに更新できない問題です.ここでは、いくつかの構成方法を挙げ、簡単にまとめます.
1.システムで信頼されているルート証明書の検証(デフォルト)自己発行証明書(12306.cn) には適していません.一般的に仲介者のハイジャック問題は存在しない.原因は以下の通りである. Androidに内蔵されたSSLの実現はConscryptプロジェクトの導入であり,HTTP(S)層は2.xのOkHttpを用いた.一方、SSL層は証明書の真偽を検証するだけであり、SSLベースのすべてのアプリケーション層プロトコルについては、証明書エンティティのアイデンティティを自分で検証する必要があるため、Androidのデフォルトのドメイン名検証はOkHostnameVerifierによって実現され、デフォルトはドメイン名を検証する.他のネットワークライブラリを使用する場合は、チェックするドメイン名をチェックする必要があります. WebViewのデフォルト検証証明書ルールでもドメイン名が検証され、Webサイトに配備されているSSL証明書がブラウザで信頼されているルート証明書発行機関でない場合、セキュリティ警告が表示されます. 信頼されているルート証明書発行機関は、他の人が証明書を申請するときにドメイン名所有権の検証を検証します.
2、ローカル証明書(certificate pinning)、cerとpemフォーマットを検証するローカル証明書はApp内にパッケージされており、タイムリーに更新できず、証明書の期限切れや取り消しの問題に対応できません. 自己発行の証明書であれば、期限はできるだけ長く設定し、信頼機関が発行した証明書であれば、期限が切れる前に新しい証明書を事前に配置し、スムーズな移行を実現する必要があります.
3、証明書を検証しない仲介者ハイジャック問題
まとめ1、発行された長期間のローカル証明書を使用する(方法2)最も安全で手間が省ける. 2、私のパッケージのRetrofitPlusの使用をお勧めします.中には本明細書の構成が含まれています.また、より便利なretrofitの使い方もあります.https://github.com/MasonLiuChn/RetrofitPlus 3、本明細書のコード:https://github.com/MasonLiuChn/TestOkhttpSSL
1.システムで信頼されているルート証明書の検証(デフォルト)
2、ローカル証明書(certificate pinning)、cerとpemフォーマットを検証する
client = OkHttpClientUtil.getSSLClient(client,this,"12306.cer");
3、証明書を検証しない
client = OkHttpClientUtil.getTrustAllSSLClient(client);
まとめ