android 访问https 证书问题 报错javax.net.ssl.SSLHandshakeException

服务器url 切换为https后所有接口调用报错javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

解决办法:

Android项目中使用 retrofit + rxjava +mvvp 架构

故在RetrofitConfig.java 的配置文件中  初始化

initOkhttp(){}

方法中加入以下代码

OkHttpClient.Builder builder = new OkHttpClient.Builder();

int[] certificates = {R.raw.new_dd};
String hosts[]= {"*.diandianwaimai.com"};
//builder.sslSocketFactory(SslContextFactory.getSSLSocketFactory(DDApplication.getInstance().getContext(),   certificates));
//builder.hostnameVerifier(SslContextFactory.getHostnameVerifier(hosts));

try {
   CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
   KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
   keyStore.load(null);
   String certificateAlias = Integer.toString(0);
   keyStore.setCertificateEntry(certificateAlias, certificateFactory.
         generateCertificate(DDApplication.getInstance().getContext().getResources().openRawResource(R.raw.new_dd)));
   SSLContext sslContext = SSLContext.getInstance("TLS");
   final TrustManagerFactory trustManagerFactory =
         TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
   trustManagerFactory.init(keyStore);
   sslContext.init
         (
               null,
               trustManagerFactory.getTrustManagers(),
               new SecureRandom()
         );
   builder.sslSocketFactory(sslContext.getSocketFactory());
   builder.hostnameVerifier(new HostnameVerifier() {
      @Override
      public boolean verify(String s, SSLSession sslSession) {
         return true;
      }
   });
} catch (CertificateException e) {
   e.printStackTrace();
} catch (KeyStoreException e) {
   e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
   e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
} catch (KeyManagementException e) {
   e.printStackTrace();
} catch (Exception ex) {

}

其中 new_dd 文件是在raw目录下

生成.cer文件的方式给出链接自己去看,我就不重复了

http://blog.csdn.net/shenxiandashu/article/details/46456403

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值