`
buerkai
  • 浏览: 167205 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java 过滤https证书验证

 
阅读更多



package com.test;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.security.GeneralSecurityException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;

public class HttpsTest {

private static X509TrustManager xtm = new X509TrustManager() {

@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub

}

@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// System.out.println("---cert: " + arg0[0].toString() + ", 认证方式: "
// + arg1);

}

@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}

};

// Create an class to trust all hosts 46
private static HostnameVerifier hnv = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
// System.out.println("hostname:111111111111111111111        "
// + hostname);
return true;
}
};

public static void main(String[] args) {

SSLContext sslContext = null;

try {
sslContext = SSLContext.getInstance("TLS");
X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
sslContext.init(null, xtmArray, new java.security.SecureRandom());
} catch (GeneralSecurityException gse) {
// 打印出一些错误信息和处理这个异常
gse.printStackTrace();
}
if (sslContext != null) {
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext
.getSocketFactory());
}
HttpsURLConnection.setDefaultHostnameVerifier(hnv);

String data = "adsfasdfasd";
String data2="";

ByteArrayOutputStream out1 = new ByteArrayOutputStream();
try {
FileInputStream fis=null;
File f=new File("c://tes.bb");
fis=new FileInputStream(f);
byte[] buf1 = new byte[1024];
int len = 0;
while ((len = fis.read(buf1)) > -1) {
out1.write(buf1, 0, len);
}
} catch (Exception e1) {

e1.printStackTrace();
}
data=new String(out1.toByteArray());
System.out.println("发送数据:\n"+data);
OutputStream dos = null;
InputStream dis = null;

try {
URL url = new URL("https://58.246.226.97:8443/easypay/entry");
HttpsURLConnection connection = (HttpsURLConnection) url
.openConnection();
// causes the VM to display a dialog when connecting
// to untrusted servers
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setAllowUserInteraction(true);
connection.setRequestProperty("Content-Type",
"application/xml;charset=UTF-8");
byte[] bytesData = data.getBytes("UTF-8");
connection.setRequestProperty("Content-Length",
String.valueOf(bytesData.length));


// connection.setRequestMethod();

dos = connection.getOutputStream();
for (int i = 0; i < bytesData.length; i++) {
dos.write(bytesData[i]);
}
dis = connection.getInputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = dis.read(buf)) > -1) {
out.write(buf, 0, len);
}
data2 = new String(out.toByteArray());
System.out.println("返回数据:\n"+data2);
} catch (Exception e) {
e.printStackTrace();
}

}
}
分享到:
评论

相关推荐

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

     Java 数字签名、数字证书的相关实例。  关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据...

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

     Java 数字签名、数字证书的相关实例。  关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据...

    Java核心技术II(第8版)

    2.3 验证XML文档 2.3.1 文档类型定义 2.3.2 XML Schema 2.3.3 实用示例 2.4 使用XPath来定位信息 2.5 使用名字空间 2.6 流机制解析器 2.6.1 使用SAX解析器 2.6.2 使用StAX解析器 2.7 生成XML文档 2.7.1 使用StAX写出...

    最详细Shiro学习资料(源码)

    Web集成:Shiro可以无缝集成到Java Web应用程序中,提供了过滤器和标签库等工具,简化了权限控制和身份验证的实现。 容器友好:Shiro可以与常见的Java容器(如Spring、Guice)以及其他框架(如Apache Struts、...

    PacketProxy:用Java编写的本地代理

    用自签名证书替换服务器证书以进行客户端验证测试 其他优点 具有内置的DNS服务器,可轻松进行数据包转发 保存/加载项目数据 支持Windows,macOS和Linux 建立 与您的操作系统相对应的版本并运行安装程序。 要么 如果...

    cobaltstrike_release-20210907.7z

    + 使用证书/子域信息更新 Cobalt Strike 更新程序 + 添加客户端重连选项 + 通过 NanoHTTPD 发送数据时添加缓冲 + 更新链接命令的信标帮助 + 更新 c2lint 以返回结果代码 + 向 UI 添加新对话框以查看 Malleable C2 ...

    spring security 参考手册中文版

    10.1.1成功认证时清除证书 91 10.1.2 DaoAuthenticationProvider 91 10.2 UserDetailsService实现 92 10.2.1内存认证 92 10.2.2 JdbcDaoImpl 93 权威组织 94 10.3密码编码 94 10.3.1什么是散列? 95 10.3.2添加盐到...

    数据挖掘weka数据分类实验报告.doc

    Weka使用Java写 成的,并且限制在GNU通用公共证书的条件下发布。它可以运行于几乎所有操作平台,是 一款免费的,非商业化的机器学习以及数据挖掘软件。Weka提供了一个统一界面,可结 合预处理以及后处理方法,将许多...

    IIS6.0 IIS,互联网信息服务

    再打开IE,在地址栏中输入“localhost”后回车,验证一下IIS是否正常运行。 经过验证,WWW、FTP等几个服务经过这样的修改都可以在Windows XP家庭版上正常运行。不过经过这样处理安装的IIS在运行上可能存在某种未知的...

    J2EE中文版指南 CHM格式 带全文检索

    过滤请求及响应 163 编写Filter 163 编写自定义的请求与响应 165 指定filter映射 166 调用其它网络资源 167 响应中包含其它资源 167 转移控制到其它网络组件 168 访问Web Context 168 维持客户端状态 169 访问一个...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已...

Global site tag (gtag.js) - Google Analytics