- 浏览: 675503 次
- 性别:
- 来自: 深圳
最新评论
-
fingerplay:
请问一下,第一份,逻辑树,就是代码里可以操纵的,例如更改lay ...
UIView与CALayer -
ok_lyc:
分享到哪里去了
iPhoneUIFont各种字体 -
lliiqiang:
我的个人理解:wait方法是在java虚拟机层面上在获取对象锁 ...
JAVA多线程同步wait、notify、synchronized -
milixw:
谢谢分享,就在找这个
iphone 推送通知 java 实现 -
wsqwsq000:
你的log4j包不行,上网搜一下:log4j-1.2.16.j ...
iphone 推送通知 java 实现
android前端与java web后台如何进行ssl交互(双向的)?
1、创建后台密钥(serverKey.jks)和android前端密钥(clientKey.bks),同样再创建后台信任库(serverTrust.jks)和android前端信任库(clientTrust.bks)。
2、将后台的密key导出证书server.cer,将前端的密key导出证书client.cer,将server.cer导入到前端信任库clientTrust.bks,将client.cer导入到后台的信任库serverTrust.jks,使前后互相信任(双向的)。
3、后台配置weblogic服务器中的ssl,如何配置,可Google一下
4、前端android请求,部分代码如下:
public final class SSLTransport { private SSLSocketFactory sslSocketFactory = null; public String sendAndReceive(String requestUrl, String sid, String xml, SSLConfig sslConfig) throws Exception { String returnXml = null; OutputStream os = null; HttpsURLConnection connection = null; try { System.setProperty("java.protocol.handler.pkgs", "javax.net.ssl"); HostnameVerifier hostnameVerifier = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { String peerHost = session.getPeerHost(); if(peerHost.equalsIgnoreCase("localhost")) { peerHost = "192.168.0.119"; } return urlHostName.equals(peerHost); } }; HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); URL url = new URL(requestUrl); connection = (HttpsURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "text/xml;charset=GBK"); connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; FIREFOX 3.6; IBM AIX 5)"); connection.setConnectTimeout(10 * 1000); connection.setDoOutput(true); connection.setDoInput(true); connection.setSSLSocketFactory(getSSLSocketFactory(sslConfig)); connection.connect(); writeStringToStream(connection.getOutputStream(), repairRacketXml(sid, xml)); if(HttpsURLConnection.HTTP_OK == connection.getResponseCode()) { returnXml = readStringFromStream(connection.getInputStream()); } } finally { if(os != null) { os.close(); } if(connection != null) { connection.disconnect(); } } return returnXml; } /** * 获取 SSLSocketFactory 实例。 * @param sslConfig SSLConfig 实例。 * @return SSLSocketFactory 实例。 * @throws Exception Exception 实例。 */ private SSLSocketFactory getSSLSocketFactory(SSLConfig sslConfig) throws Exception { //取得SSLContext SSLContext sslContext = SSLContext.getInstance(sslConfig.getProtocol()); //取得X509私钥管理器 KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(sslConfig.getAlgorithm()); //取得X509信任管理器 TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(sslConfig.getAlgorithm()); //取得私钥库实例 KeyStore keyStore = KeyStore.getInstance(sslConfig.getStoreType()); //取得信任库实例 KeyStore trustkeyStore = KeyStore.getInstance(sslConfig.getStoreType()); //加载私钥库 keyStore.load(sslConfig.getIdentityStoreStream(), sslConfig.getIdentityStorePassword().toCharArray()); //加载信任列表 trustkeyStore.load(sslConfig.getTrustStoreStream(), sslConfig.getTrustStorePassword().toCharArray()); //初始化私钥工厂 keyManagerFactory.init(keyStore, sslConfig.getIdentityStorePassword().toCharArray()); //初始化信任列表工厂 trustManagerFactory.init(trustkeyStore); //初始化SSLContext sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null); //通过SSLContext取得SocketFactory if(sslSocketFactory == null) { sslSocketFactory = sslContext.getSocketFactory(); } //关闭输入流。 sslConfig.getIdentityStoreStream().close(); sslConfig.getTrustStoreStream().close(); return sslSocketFactory; } /** * 从输入流中获取字符串。 * @param is InputStream 实例。 * @return 结果字符串。 * @throws Exception Exception 实例。 */ private String readStringFromStream(InputStream is) throws Exception { StringBuffer sb = new StringBuffer(); InputStreamReader isr = null; BufferedReader br = null; try { String buffer = null; isr = new InputStreamReader(is, "GBK"); br = new BufferedReader(isr); while((buffer = br.readLine()) != null) { sb.append(buffer); } } catch(Exception ex) { throw new Exception(ex); } finally { if(br != null) { br.close(); } if(isr != null) { isr.close(); } if(is != null) { is.close(); } } return sb.toString().trim(); } /** * 将XML字符串写入输出流。 * @param os OutputStream 实例。 * @param xml XML字符串。 * @throws Exception Exception 实例。 */ private void writeStringToStream(OutputStream os, String xml) throws Exception { OutputStreamWriter osw = null; try { osw = new OutputStreamWriter(os, "GBK"); osw.write(xml); osw.flush(); } catch(Exception ex) { throw new Exception(ex); } finally { if(osw != null) { osw.close(); } if(os != null) { os.close(); } } } /** * 修复Packet形式的XML字符串。 * @param sid 服务请求ID。 * @param xml 请求XML。 * @return 修复后Packet形式的字符串。 * @throws Exception Exception 异常。 */ private String repairRacketXml(String sid, String xml) throws Exception { Packet packet = PacketParser.parse(xml); packet.getHead().getService().setHandler(sid); return packet.toString(); } }
发表评论
-
google开放的maps api接口
2012-01-12 22:51 1172google开放的Maps api接口,包括很多版 ... -
iphone中请求对应的Mime type
2011-09-21 10:03 2248Extension MIME type Desc ... -
android style
2011-07-09 21:47 1409对于能够显示文字的控件(如TextView EditTex ... -
android 定时器
2011-07-09 21:47 2114在Android上常用的定时器有两种,一种是Java.util ... -
android 4大组件介绍
2011-07-09 21:47 1884Android组件 横看成岭侧成峰,远近高低各不同。 -- ... -
view中的getTag何setTag
2011-07-09 21:46 1369View中的setTag(Onbect)表示给View添加一个 ... -
android handler介绍
2011-07-09 21:46 1331/*** * Handler的定义: * 主要接受 ... -
AsyncTask的使用
2011-07-09 21:46 1052本片不多说 直接引用: ... -
Android 调试桥abd
2011-07-09 21:44 1040Android 调试桥(adb)是多种用途的工具,该工具可 ... -
Android 应用程序之间数据共享—ContentProvider
2011-07-09 21:44 1909在Android 应用程序之间数据共享—-ContentRes ... -
Content Provider
2011-07-09 21:44 1120Android程序的主要4部分 ... -
android之ContentResolver与ContentProvider
2011-07-09 21:43 1523android中对数据操作包含有: file, sqlite3 ... -
android contentResolver与contentProvider如何关联在一起的
2011-07-09 21:43 2047看到一篇文章觉得不错,推荐给大家,希望大家喜欢Applicat ... -
android service入门
2011-07-09 21:42 855android SDK提供了Service,用于类似*nix守 ... -
AsyncQueryHandler
2011-07-09 21:42 1346AsyncQueryHandler研究 andr ... -
android下载进度条
2011-07-09 21:41 4111我们今天开始学习的是下载进度的实现。今天的这段代码是网上找的, ... -
android UI设计之TableLayout
2011-07-09 21:41 1220TableLayout和我们平时在网页上见到的Table有所不 ... -
android如何获取后台正在运行的service
2011-07-09 21:40 3991给一段获取正在运行的后台service的代码,如下: ... -
Android之getSystemService
2011-07-09 21:40 1496getSystemService是Android很重要的一个 ... -
android体系架构
2011-07-09 21:39 2462作者:张华 发表于:200 ...
相关推荐
ssl demo 测试双向认证握手时间消耗 华为的手机消耗比较多时间
详细介绍了java如何使用SSL来进行socket通信了 最主要的是介绍了如何使用keytool来生成.keystore文件 ps:设置一分是希望那些刚入门或则对csdn访问不多的朋友 多花点时间 表面上市搞积分 事实上是有帮助的。 如果你...
SSL交互和握手过程 SSL消息按如下顺序发送: 1.Client Hello 客户发送服务器信息,包括它所支持的密码组。密码组中有密码算法和钥匙大小; 2.Server Hello 服务器选择客户和服务器都支持的密码组到客户。 3....
java android 的ssl socket通讯,X509运行
java信任SSL证书的工具类 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
这个是我通过学习总结的资料,介绍了如何SSLSocket的一些简单的知识,以及介绍了如何利用JDK自带的keytool工具生成密钥库、证书等,还有Demo作为例子,很好的学习资料。
本demo使用HttpsURLConnection方式的SSL双向认证,实现oauth2.0客户端请求方式,并且实现了普通post接口请求,及多图上传的post请求接口,做了网络请求的封装。
java实现 SSL双向认证,java ssl包使用
android ssl证书验证
介绍了如何使用Java程序实现SSL加密,以及使用Openssl生成密码
ssl详解,介绍ssl的详细的内容,欢迎大家下载。
Java中的SSL及HTTPS协议实例源码
关于一篇android安全的文章,Many Android apps have a legitimate need to communicate over the Internet and are then responsible for protecting potentially sensitive data during transit.
JAVA通过LDAP+SSL(证书)实现用户和组织(部门)增删改查(Java代码部分),里面包含源码和文档,以便大家测试。
java实现_SSL双向认证,里面详细介绍怎样实现,还包括完整的实现代码,直接可用
java https ssl 实例 例子
web 服务器ssl认证配置手册(tongweb)web 服务器ssl认证配置手册(tongweb)web 服务器ssl认证配置手册(tongweb)web 服务器ssl认证配置手册(tongweb)
java实现 SSL双向认证,java ssl包使用
android MQTT 带SSL加密连接例子demo 安卓使用BKS加密文件进行SSL加密MQTT连接