在公钥基础结构中使用square okHTTP lib的HTTPS / SSL

时间:2014-05-14 15:56:27

标签: android security ssl keystore okhttp

我需要使用PKI实现通过HTTPS发送数据的整个过程,如http://upload.wikimedia.org/wikipedia/commons/9/96/Usage-of-Digital-Certificate.svg

所述

如何签名(我真的必须这样做吗?)我的私钥请求,以及如何添加证书(我从webservice收到)?

我拥有自己的密钥库(http://nelenkov.blogspot.com/2011/12/using-custom-certificate-trust-store-on.html(非常棒的博客!)),其中包含Web服务RootCA,用于创建CSR文件的私钥,以及由webservice签名的证书(使用csr)。

我使用robospice + square retrofit + square okHttp(或者可能使用其他HTTP客户端?)来执行请求并拥有自己的SSLSocketFactory

OkHttpClient client = new OkHttpClient();  
KeyStore keyStore = App.getInstance().getKeyStoreUtil().getKeyStore();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, AppConfig.KEYSTORE_PASSWORD);
SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
client.setSslSocketFactory(sslCtx.getSocketFactory());

由于网络服务还没有实现,我不知道它是否有效,如果有人能告诉我是否正确,我真的很感激。

1 个答案:

答案 0 :(得分:0)

上面的代码正在运行,但请记住,从像App.getInstance.getKeyStoreUtil()这样的App获取类不是真正干净的解决方案