在网上看了,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();
}
}
分享到:
相关推荐
本文将详细介绍如何使用`HttpClient`和`HttpsURLConnection`两种方式来访问HTTPS网站,包括验证证书和不验证证书的实现方法。 ### 1. Android中的HttpClient `HttpClient`是Apache提供的一种HTTP客户端库,它支持...
根据提供的部分文件内容,在实现双向认证之前,需要先生成自签名证书。这些证书包括客户端证书(client.cer、client.p12、client.truststore)以及服务器证书(server.cer、server.keystore)。 - **服务器证书**:用于...
《Android 2.1 源码深度剖析》 Android 2.1,作为一个历史悠久的移动操作系统版本,其源码的解析对于理解Android系统的工作原理至关重要。这份完整的源码不仅包含了大量的Java代码,还涵盖了系统运行的核心组件和库...
为了让服务器支持HTTPS,你需要生成SSL证书,然后在Tomcat的`conf/server.xml`中配置`<Connector>`元素,设置`scheme="https"`,`port`为你想要的HTTPS端口,以及`keystoreFile`和`keystorePass`,分别指向SSL证书...
5. **安全通信**:内置对HTTPS的支持,可以方便地配置TLS/SSL证书,确保数据传输的安全性。 Okio则是OkHttp的一个依赖库,它提供了一套低级的IO操作API,旨在提高I/O性能。Okio 2.1版本包含以下特性: 1. **缓冲区...
在数据传输过程中,如果应用程序没有正确验证SSL/TLS证书或主机名,可能会导致中间人攻击等安全风险。为了解决这一问题,开发者需要确保使用最新的加密协议,并且对服务器端证书进行严格的验证。例如,在Java中可以...
- **证书管理**:确保应用只信任有效的SSL证书。 - **网络权限控制**:限制应用的网络访问行为。 #### 三、安全实践 **3.1 安全开发** - **安全编码指南**:遵循最佳实践避免常见的安全漏洞。 - **代码审查**:...
**三、测试Android程序在模拟器中的运行** 1. **创建Android项目** - 在Eclipse中新建一个Android项目。 - 设置项目名称、包名等基本信息。 2. **编写Hello World程序** - 在`MainActivity.java`文件中编写...
- **2.7.4 主机名验证**:解释如何验证SSL证书中的主机名以增强安全性。 **2.8 HttpClient代理配置**:介绍如何配置HttpClient使用代理服务器进行网络请求。 #### 三、状态管理 **3.1 HTTP Cookie** - **3.1.1 ...
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...
包括前端展示层、业务逻辑层、数据访问层等层次结构,实现业务逻辑与展示逻辑的分离。 **4.3.4 系统技术架构** 采用微服务架构,每个服务独立部署,易于维护和扩展。同时利用容器化技术,如Docker,提高资源利用率...