栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android中的https(无对等证书)问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android中的https(无对等证书)问题

终于我解决了https问题。当我与之抗争时,主要问题在于服务器,尤其是证书。Android仅支持“
BKS”证书,这就是我们无法从服务器获得响应的原因。为了解决这个问题,我阅读了30多篇文章,最后找到了解决方案。

您可以在下面看到我为解决此问题而执行的步骤:

我要做的第一件事是从我们的fidoserver.crt证书生成.bks密钥库文件,为了做到这一点,我已阅读本文,并执行以下操作:

  1. 打开cmd
  2. 转到JDK文件夹“ cd X: Programs Java Jdk6 bin”
  3. 调用以下命令:

keytool-导入-alias tomcat-文件X://KeyStore/fidoserver.crt -keypass密码-keystore
X://KeyStore/keystore.bks -storetype BKS -storepass 222222 -providerClass
org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath
X://KeyStore/bcprov-jdk16-146.jar

在运行此命令之前,我已经下载了Bouncy
Castle
.jar文件,并将其放入带有证书的文件夹中。完成所有步骤后,我将获得keystore.bks文件,该文件是适用于Android应用程序的正确证书文件。我将此文件放在Android的mnc
/ sdcard文件夹中。在Java代码中,我编写了以下代码来读取keystore.bbk文件

KeyStore trustStore  = KeyStore.getInstance( "BKS"  );FileInputStream instream = new FileInputStream(new File("/mnt/sdcard/keystore.bks"));try {    trustStore.load(instream, "222222".toCharArray());} catch (NoSuchAlgorithmException e) {    e.printStackTrace();} catch (CertificateException e) {    e.printStackTrace();} catch (IOException e) {    e.printStackTrace();} finally {    try { instream.close(); } catch (Exception ignore) {}}// Create socket factory with given keystore.SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);Scheme sch = new Scheme("https", socketFactory, 443);httpclient.getConnectionManager().getSchemeRegistry().register(sch);HttpGet httpget = new HttpGet("https://10.2.20.20/fido/EzPay/login.php");System.out.println("executing request " + httpget.getRequestLine());HttpResponse response = httpclient.execute(httpget);HttpEntity entity = response.getEntity();System.out.println("----------------------------------------");System.out.println(response.getStatusLine());if (entity != null) {    System.out.println("Response content length:  " + entity.getContentLength());}// Print html.BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));String line = "";while ((line = in.readLine()) != null) {     System.out.println(line);}in.close();

所有这些使m可以使用给定的密码222222(使用keytool创建密钥库时提供的密码)加载我们的证书。

在这之后,我所有的测试应用程序开始正常工作。现在,我可以向https发送请求并从中获取响应。我已经使用FIDO服务器测试了应用程序,一切正常!我认为星期一我将在EzPay应用程序中进行一些更改,并且它将开始使用https连接。

参考文献

  • 在Apache Tomcat和Android上使用TLS
  • Android应用程序的SSL验证
  • 密钥库
  • Android:信任SSL证书
  • 充气城堡


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595278.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号