安卓TLS通讯
来源:互联网 发布:deepin 安装软件 编辑:程序博客网 时间:2024/06/05 07:33
上一篇文章介绍了运行portecle.jar,通过图形界面,可以生成安卓可用的client.bks签名文件,
这里介绍怎么使用。网上看了很多,有点乱,我这个是自己实际在用的
1、把client.bks文件放到res raw目录下
2、创建EasyX509TrushManager implements X509TrustManager
import java.security.KeyStore;import java.security.KeyStoreException;import java.security.NoSuchAlgorithmException;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.TrustManager;import javax.net.ssl.TrustManagerFactory;import javax.net.ssl.X509TrustManager;/** * Created by zhangdk on 2017/6/19. */public class EasyX509TrushManager implements X509TrustManager { private X509TrustManager standardTrustManager = null; /** * Constructor for EasyX509TrustManager. */ public EasyX509TrushManager(KeyStore keystore) throws NoSuchAlgorithmException, KeyStoreException { super(); TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); factory.init(keystore); TrustManager[] trustmanagers = factory.getTrustManagers(); if (trustmanagers.length == 0) { throw new NoSuchAlgorithmException("no trust manager found"); } this.standardTrustManager = (X509TrustManager) trustmanagers[0]; } /** * @see javax.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[],String authType) */ public void checkClientTrusted(X509Certificate[] certificates, String authType) throws CertificateException { standardTrustManager.checkClientTrusted(certificates, authType); } /** * @see javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[],String authType) */ public void checkServerTrusted(X509Certificate[] certificates, String authType) throws CertificateException { if ((certificates != null) && (certificates.length == 1)) { certificates[0].checkValidity(); } else { standardTrustManager.checkServerTrusted(certificates, authType); } } /** * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers() */ public X509Certificate[] getAcceptedIssuers() { return this.standardTrustManager.getAcceptedIssuers(); }}
3、取得TLS的SSLContent实例
SSLContext sslContext = SSLContext.getInstance("TLS");//取得KeyManagerFactory和TrustManagerFactory的X509密钥管理器实例KeyStore tks= KeyStore.getInstance("BKS");tks.load(getResources().openRawResource(R.raw.client), "123456".toCharArray());EasyX509TrushManager trushManager = new EasyX509TrushManager(tks);sslContext.init(null, new TrustManager[]{trushManager}, null);
4、获取SocketFactory,创建SSLSocket
SocketFactory factory = sslContext.getSocketFactory();
this.socket = (SSLSocket) factory.createSocket(host, port);
this.socket.setKeepAlive(true);this.socket.setSoTimeout(0);
this.socket.startHandshake();
其他就没什么不一样了,拿输入输出流去写数据、接收数据就好
阅读全文
0 0
- 安卓TLS通讯
- 安卓socket通讯
- 安卓蓝牙通讯
- 安卓usb通讯
- 安卓中的socket通讯
- 配置OpenLDAP使用TLS通讯
- [安卓]手机管家(十二)通讯卫士
- 安卓进程通讯之aidl
- 安卓进程通讯之messenger
- 关于安卓通讯的 XMPP协议
- 安卓Socket通讯简单示例
- 安卓usb转串口通讯
- 安卓进程之间的通讯
- Java SSL/TLS 安全通讯协议介绍
- Java SSL/TLS 安全通讯协议(SSLSocket)
- Java SSL/TLS 安全通讯协议介绍
- Java SSL/TLS 安全通讯协议介绍
- Java SSL/TLS 安全通讯协议介绍
- PL/SQL编程
- 解决springMVC中restful的POST请求时接受json对象转换pojo对象失败问题
- python函数中的*args与**kwargs
- Java集合源码分析
- 使用Java的JNative调用dll动态链接库
- 安卓TLS通讯
- MAC OS X 安装、配置、启动 rabbitMQ
- centOS7下如何搭建memcached+mongodb+jdk+tomcat的基础应用环境
- Unity3D中如何计算场景中的三角面和顶点数
- C++多态
- 为什么要用交叉验证
- git提交到github(3)
- Swift + AFNetworking获取天气信息
- 阿里云https证书pem转成cer格式