当前位置: 首页 > news >正文

android https 证书过期变更,使用自定义证书的Android https连接

我想使用位于p12包中的自定义证书进行https连接。我已经在iPhone上做过了(所以我可以验证,证书,服务器等一切正常),但是在Android上遇到了一些问题。使用自定义证书的Android https连接

12-13 12:32:44.545:W/System.err的(4407): javax.net.ssl中.SSLHandshakeException: java.security.cert.CertPathValidatorException:未找到 证书路径的信任锚点。 12-13 12:32:44.545:W/System.err(4407): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:374) 12-13 12:32 :44.545:W/System.err(4407):at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:209) 12-13 12:32:44.545:W/System.err(4407):at libcore.net.http.HttpsURLConnectionImpl $ HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:478) 12-13 12:32:44.545:W/System.err的(4407):在 libcore.net.http.HttpsURLConnectionImpl $ HttpsEngine。连接(HttpsURLConnectionImpl.java:433) 12-13 12:32:44.545:W/System.err(4407):at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 12-13 12:32:44.550:W/System.err(4407):at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)12-13 12:32:44.550:W/System .err(4407):at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 12-13 12:32:44.550:W/System.err(4407):at libcore.net.http .HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:165) 12-13 12:32:44.550:W/System.err(4407):at com.geckolab.httptestandroid.MainActivity.downloadUrlHttps(MainActivity.java:172) 12 -13 12:32:44.550:W/System.err(4407):at com.geckolab.httptestandroid.MainActivity.access $ 0(MainActivity.java:151) 12-13 12:32:44.550:W/System。 err(4407):at com.geck olab.httptestandroid.MainActivity $ DownloadWebPageTextHttps.doInBackground(MainActivity.java:99) 12-13 12:32:44.550:W/System.err(4407):at com.geckolab.httptestandroid.MainActivity $ DownloadWebPageTextHttps.doInBackground(MainActivity .java:1) 12-13 12:32:44.550:W/System.err(4407):at android.os.AsyncTask $ 2.call(AsyncTask.java:287)12-13 12:32:44.550: W/System.err(4407):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305) 12-13 12:32:44.555:W/System.err(4407):at java.util.concurrent.FutureTask.run(FutureTask.java:137)12-13 12:32:44.555:W/System.err(4407):at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask .java:230)12-13 12:32:44.555:W/System.err(4407):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 12-13 12:32:44.555:W/System.err( 4407):在 java.util.concurrent.ThreadPoolExecutor中$ Worker.run(ThreadPoolExecutor.java:569) 12-13 12:32:44.555:W/System.err的(4407):在 java.lang.Thread中。运行(Thread.java:856)12-13 12:32:44.555: W/System.err(4407):导致者: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException:Trust anchor找不到 认证路径。 12-13 12:32:44.560:W/System.err(4407): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl。(TrustManagerImpl.java:192) 12-13 12:32:44.560:W/System.err ) 12-13 12:32:44.560:W/System.err(4407):at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:573) 12-13 12: 32:44.560:W/System.err(4407):at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)12-13 12:32:44.560:W/System.err( 4407):at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371) 12-13 12:32:44.560:W/System.err(4407):... 18更多12-13 12:32:44.560:W/Syst em.err(4407):导致: java.security.cert.CertPathValidatorException:未找到 证书路径的信任锚点。 12-13 12:32:44.560:W/System.err的(4407): ...... 23多个

我的连接代码看起来如下:

KeyStore ks = KeyStore.getInstance("PKCS12");

ks.load(context.getResources().openRawResource(R.raw.gecko_cert_1), "gecko_cert_1".toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");

kmf.init(ks, "gecko_cert_1".toCharArray());

SSLContext sc = SSLContext.getInstance("TLS");

sc.init(kmf.getKeyManagers(), null, null);

//request

URL serverURL = new URL(myurl);

HttpsURLConnection conn = (HttpsURLConnection)serverURL.openConnection();

conn.setSSLSocketFactory(sc.getSocketFactory());

//conn.setHostnameVerifier(DO_NOT_VERIFY);

conn.setReadTimeout(10000 /* milliseconds */);

conn.setConnectTimeout(15000 /* milliseconds */);

conn.setRequestMethod("GET");

conn.setDoInput(true);

// Starts the query

conn.connect();

干杯, 马尔辛

+0

在你的文章中你提到你有在iOS中工作的证书认证。你能提供你在iOS上使用证书认证的代码吗? –

相关文章:

  • android7彩蛋oppo,OPPO ColorOS 7来了!没想到重磅消息却是“彩蛋”Reno3系列?
  • 利用CodeSmith为SQL Server CE生成项目代码
  • android隐藏微信好友,如何使用微信隐藏的恢复小技巧?微信好友恢复!
  • 梦里方知此身背
  • android指纹登录demo,Android指纹认证Demo源码
  • assicdoc 转换html,Swagger+spring boot 转换为html,PDF文件等
  • 英雄会开幕致辞--分享交流,开放协作带来共同繁荣的时代
  • html按钮过渡效果,css3_transition: 体验好的过渡效果。附 好看的按钮
  • Winsocket编程之TCP/IP体系结构
  • html 属于mvvm框架,vue.js是mvvm框架吗?
  • 部署ISA网络防火墙策略
  • 计算机英语 自我介绍,计算机专业学生面试英语自我介绍
  • Windows Embedded开发资源介绍
  • 异步socket的线程分配(C#)
  • 计算机专业期末试卷,计算机专业英语期末考试试卷(A卷)
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Android Studio:GIT提交项目到远程仓库
  • Brief introduction of how to 'Call, Apply and Bind'
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript学习总结——原型
  • October CMS - 快速入门 9 Images And Galleries
  • OSS Web直传 (文件图片)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • ubuntu 下nginx安装 并支持https协议
  • 从零开始的无人驾驶 1
  • 基于 Babel 的 npm 包最小化设置
  • 基于Android乐音识别(2)
  • 技术发展面试
  • 码农张的Bug人生 - 初来乍到
  • 面试遇到的一些题
  • 区块链共识机制优缺点对比都是什么
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • $.ajax中的eval及dataType
  • (1)(1.9) MSP (version 4.2)
  • (6)设计一个TimeMap
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++)八皇后问题
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (MATLAB)第五章-矩阵运算
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @31省区市高考时间表来了,祝考试成功
  • @AutoConfigurationPackage的使用
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @selector(..)警告提示
  • [ IOS ] iOS-控制器View的创建和生命周期
  • []C/C++读取串口接收到的数据程序
  • [Assignment] C++1
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务