为 Android 程序创建 CA keystore 以及 self-signed keystore 的方法 - yanbin's Blog

为 Android 程序创建 CA keystore 以及 self-signed keystore 的方法

yanbin posted @ 2015年3月29日 18:36 in Networking with tags programming Networking , 10806 阅读
为什么 Android 程序需要 CA KeyStore?
1. 在 Android 程序中建立一条 SSL/TLS 连接时,受信任 CA?(Trusted CAs) 用来验证 server。
? ? Public-Key Infrastructure (PKI)?中有 trust certs 概念,许多网络工具实现了 trusted CA 的使用。
??? 比如: curl, Android?URLConnection.
? ? Android 系统中有一个 trusted CAs list, 包含 100 多个 trusted CAs.
??
2. 建立 SSL/TLS 连接时现有的 trusted CAs 不能验证服务器证书,会引发一个 security exception:
? ? ? ?javax.net.ssl.SSLHandshakeException: ... : Trust anchor for certification path not found.
? ?具体而言,以下这些情况会引发这个问题:
? ? ? (a) The CA that issued the server certificate was unknown;
? ? ? (b)?The server certificate wasn't signed by a CA, but was self signed;
? ? ? (c)?The server configuration is missing an intermediate CA;
?
3. 针对(a) 和 (b) 这两种情况,解决方法是创建 SSL/TLS 连接时使用 Android TurstManager 工具。
? ? 在 Android 程序中 TrustManager 用 KeyStore instance 初始化,而 KeyStore instance 读取/解析
??? BKS/JKS 格式的 KeyStore 文件,获得证书信息。
??
4. 使用 keytool?工具创建 BKS 格式的 KeyStore 文件。
? ? keytool 在多数 linux 发行版中都可以通过 package 管理工具获得。
? ? keytool 创建 BKS 格式的 KeyStore 文件需要用到 BouncyCastle Provider, 这个文件 JRE 不提供,
??? keytool 本身也没有提供,需要下载后通过参数指定。创建 JKS 格式的 KeyStore 不用这个文件。
?
? ? $?keytool -importcert -v -trustcacerts -file "root-ca.crt" -alias root-ca -keystore "root-ca.bks"
?????? -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar"
?????? -storetype BKS -storepass zhelishimia
?
?? 验证 keystore 文件是否正确:
?? $ keytool -list -keystore "root-ca.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider
???? -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass zhelishimima
?
5. 也可以直接用 server certificate 生成 keystore 并且设置为 trusted, 不过这样做不够安全,而且 server
??? 端的证书有改变时还需要生成新的证书。
??
?
有时也客户端程序也用证书标识自己的身份。或者有些 JAVA server 程序中建立 SSL 连接时用 KeyStore
提供证书信息。
1. 使用 openssl 工具转换 X509 格式的 public certificate 和 private key 为 pkcs12 格式的文件。
??? $ openssl pkcs12 -export -in broker.crt -inkey broker.key -out broker.p12 -name client001
?????? -CAfile root-ca.crt -chain
?
2. 使用 openssl 工具和 pkcs12 文件生成 keystore
??? $ keytool -importcert -v -trustcacerts -file "root-ca.crt" -alias root-ca -keystore "root-ca.bks"
?????? -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar"
?????? -storetype BKS -storepass 12345678
?
3. 在 Android 程序中, 建立一条 SSL 连接时可以用 KeyManager 工具指定本端的 public certificate,
??? private key, KeyManager 需要用 KeyStore instace 初始化,KeyStore instance 加载/解析 keystore 文件,
??? 获取 public certificate 以及 private key 信息。
?
?
参考:

???

Avatar_small
pokemon go apk 说:
2017年1月22日 19:04

This is a very interesting web page and I have enjoyed reading many of the articles and posts contained on the website, keep up the good work and hope to read some more interesting content in the future.

Avatar_small
lolnexus 说:
2017年10月14日 14:24

It is a great article. You will surely like this also because it is a great stuff, yeah it’s give us lots of interest and pleasure. Their opportunities are so fantastic and working style so speedy. Thank you for sharing the nice article.

Avatar_small
blackmart 说:
2017年10月14日 14:25

Thank you for bringing more information to this topic for me. I’m truly grateful and really impressed. Absolutely this article is incredible..

Avatar_small
Buy a 314 Area code 说:
2018年7月19日 15:18

Buy a 314 Area code Number in usa

Avatar_small
we mobile price in b 说:
2018年10月18日 17:51

I am waiting for your next help post

Avatar_small
mobile price in bd 说:
2018年10月18日 17:53

it's a very interesting web page I will back

Avatar_small
unique girl names 说:
2018年10月23日 15:24

Thanks for sharing these useful information!

Avatar_small
Assignment help 说:
2018年10月27日 17:58

Students Assignment Help provides the services of customer psychology assignment help to the students.All Assignment Help is an online Assignment Help and assignment writing service offering expert assignment help.Hire Australian,US assignment writing experts.

Avatar_small
rolling sky 说:
2018年12月26日 10:33

I have a similar issue. I will try your solution and see if it works

Avatar_small
mpcsonline 说:
2019年3月28日 13:47

MetroPCS Payment Online & Offline | MetroPCS Bill Pay Terms & Conditions Thank you for sharing! I hope you will continue to have great articles like this to share with everyone! Mpcs Online

Avatar_small
mpcsonline 说:
2019年3月28日 13:48

I found this blog very informative and interesting. Will look forward to more such posts http://mpcs.online/

Avatar_small
fireboy and watergir 说:
2019年4月16日 09:57

I think this is an informative post and it is very useful and knowledgeable. I really enjoyed reading this post. big fan, thank you!

Avatar_small
remove password 说:
2019年5月13日 22:23

good

Avatar_small
pcsmetrobytmobile 说:
2019年7月16日 15:16

Metrobyt mobile payment I found this blog very informative and interesting. Will look forward to more such posts MetroPCS payment

Avatar_small
pcsmetrobytmobile 说:
2019年8月14日 18:37

Metrobyt mobile payment
Very interesting, good job and thanks for sharing such a good blog MetroPCS payment

Avatar_small
KOKO 说:
2019年8月21日 17:57

hello,
Your Site is very nice, and it's very helping us this post is unique and interesting, thank you for sharing this awesome information. and visit our blog site also
Satta King

Avatar_small
KOKO 说:
2019年8月21日 17:58

hello,
Your Site is very nice, and it's very helping us this post is unique and interesting, thank you for sharing this awesome information. and visit our blog site also
Satta King

https://sattakingdarbar.com/

Avatar_small
toto212 说:
2019年8月31日 16:55

Togel212 adalah Bandar Togel Online Terpercaya yang menyediakan berbagai macam permainan terbaik dan terlengkap seperti Togel SGP, Togel HKG, Togel Sydney dan Magnum4D. Togel212 juga merupakan Situs Judi Casino Online Terpercaya dengan berbagai games Live Casino favorit seperti baccarat, roulette, blackjack dan sebagainya dengan real time streaming yang cepat.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter