`
luckliu521
  • 浏览: 258796 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在android2.1如何实现对ssl的无证书访问?(转)

 
阅读更多
在网上看了,httpchlent的资料,httpchlent4.1可以实现对ssl的无证书访问。
实现代码为:
  SSLContext sslcontext = SSLContext.getInstance("TLS");
    sslcontext.init(null, new TrustManager[] { easyTrustManager }, null);
    SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
    Scheme sch = new Scheme("https", sf, 8443);
    httpclient.getConnectionManager().getSchemeRegistry().register(sch);

但在android2.1中,SSLSocketFactory类中没有下面这个构造函数
SSLSocketFactory sf = new SSLSocketFactory(sslcontext);

客户端不想存放安全证书,请问在android2.1如何实现对ssl的无证书访问?

解决方法如下:
public String connentUrl(String strUrl) {
  StringBuffer sbResult = null;

try {
  HttpURLConnection http = null;
  URL url = new URL(strUrl);

  // 判断是http请求还是https请求
  if (url.getProtocol().toLowerCase().equals("https")) {
     trustAllHosts();
     HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
     https.setHostnameVerifier(DO_NOT_VERIFY);
     http = https;
  } else {
      http = (HttpURLConnection) url.openConnection();
  }                                              
               
  http.setDoInput(true);
  // 设置超时时间
  http.setConnectTimeout(10000);
  // 设置请求类型为post
  http.setRequestMethod("POST");
// 设置接收类型
  http.setRequestProperty("accept", "*
private static void trustAllHosts() {
     // Create a trust manager that does not validate certificate chains
     // Android 采用X509的证书信息机制
    TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
     public java.security.cert.X509Certificate[] getAcceptedIssuers() {
          return new java.security.cert.X509Certificate[] {};
   }

public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
  public void checkServerTrusted(X509Certificate[] chain,String authType) throws CertificateException {}
}
};

// Install the all-trusting trust manager
try {
  SSLContext sc = SSLContext.getInstance("TLS");
  sc.init(null, trustAllCerts, new java.security.SecureRandom());
  HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
  e.printStackTrace();
}
}
分享到:
评论

相关推荐

    Android使用HttpClient和HttpsUrlConnection两种方式访问https网站

    本文将详细介绍如何使用`HttpClient`和`HttpsURLConnection`两种方式来访问HTTPS网站,包括验证证书和不验证证书的实现方法。 ### 1. Android中的HttpClient `HttpClient`是Apache提供的一种HTTP客户端库,它支持...

    ssl+android

    根据提供的部分文件内容,在实现双向认证之前,需要先生成自签名证书。这些证书包括客户端证书(client.cer、client.p12、client.truststore)以及服务器证书(server.cer、server.keystore)。 - **服务器证书**:用于...

    andorid2.1源码

    《Android 2.1 源码深度剖析》 Android 2.1,作为一个历史悠久的移动操作系统版本,其源码的解析对于理解Android系统的工作原理至关重要。这份完整的源码不仅包含了大量的Java代码,还涵盖了系统运行的核心组件和库...

    AndroidHttps服务器端和客户端简单实例

    为了让服务器支持HTTPS,你需要生成SSL证书,然后在Tomcat的`conf/server.xml`中配置`<Connector>`元素,设置`scheme="https"`,`port`为你想要的HTTPS端口,以及`keystoreFile`和`keystorePass`,分别指向SSL证书...

    okhttp3.11与okio2.1Jar包

    5. **安全通信**:内置对HTTPS的支持,可以方便地配置TLS/SSL证书,确保数据传输的安全性。 Okio则是OkHttp的一个依赖库,它提供了一套低级的IO操作API,旨在提高I/O性能。Okio 2.1版本包含以下特性: 1. **缓冲区...

    android安全指南

    在数据传输过程中,如果应用程序没有正确验证SSL/TLS证书或主机名,可能会导致中间人攻击等安全风险。为了解决这一问题,开发者需要确保使用最新的加密协议,并且对服务器端证书进行严格的验证。例如,在Java中可以...

    android安全机制

    - **证书管理**:确保应用只信任有效的SSL证书。 - **网络权限控制**:限制应用的网络访问行为。 #### 三、安全实践 **3.1 安全开发** - **安全编码指南**:遵循最佳实践避免常见的安全漏洞。 - **代码审查**:...

    移动互联网开发技术-知识手册

    **三、测试Android程序在模拟器中的运行** 1. **创建Android项目** - 在Eclipse中新建一个Android项目。 - 设置项目名称、包名等基本信息。 2. **编写Hello World程序** - 在`MainActivity.java`文件中编写...

    httpclient-tutorial.pdf

    - **2.7.4 主机名验证**:解释如何验证SSL证书中的主机名以增强安全性。 **2.8 HttpClient代理配置**:介绍如何配置HttpClient使用代理服务器进行网络请求。 #### 三、状态管理 **3.1 HTTP Cookie** - **3.1.1 ...

    JAVA上百实例源码以及开源项目源代码

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    智慧城市政务OA系统建设方案.docx

    包括前端展示层、业务逻辑层、数据访问层等层次结构,实现业务逻辑与展示逻辑的分离。 **4.3.4 系统技术架构** 采用微服务架构,每个服务独立部署,易于维护和扩展。同时利用容器化技术,如Docker,提高资源利用率...

Global site tag (gtag.js) - Google Analytics