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 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习文档。LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,用于管理和访问目录服务中的...
2. **处理SSL证书**:在开发环境中,可以使用`requests`库的`verify=False`选项忽略证书验证,但生产环境中需要确保证书的正确性,可以使用自签名证书或信任的CA签发的证书。 3. **处理HTTPS通过代理**:对于HTTPS...
本文将深入探讨如何使用Java通过LDAP(轻量级目录访问协议)和SSL(安全套接层)来实现用户和组织(部门)的增删改查操作,并结合证书确保通信的安全性。这些功能通常用于大型企业的用户管理,例如Active Directory...
IE浏览器在访问HTTPS站点时,会验证服务器的SSL证书,包括证书的颁发机构、有效期、公钥以及与域名的匹配性。如果证书无效或不被信任,浏览器会显示警告信息,用户可以选择继续访问或中断连接。 SSL介绍 SSL协议是...
Java认证是Sun Microsystems(后被Oracle公司收购)推出的一项针对Java程序员的专业认证,旨在验证个人在Java编程领域的技能和知识。这个"SCJP_Guide.pdf"文件很可能包含了备考Sun公司的Java Certified Programmer...
包括使用过滤器进行请求验证、避免使用不安全的HTTP方法、控制Session管理等。 十、持续学习与更新 Java安全不断演进,新的漏洞和攻击手段层出不穷。因此,开发者应定期学习最新的安全指南,及时更新库和框架,以...
这个过程涉及到证书的使用,以及设置签名的日期、过滤器等信息。最后,通过PDDocument.saveSigned()方法保存修改后的PDF文件。 电子签名的核心在于数字证书,它是由CA(Certification Authority)签发的,包含了...
在Java开发过程中,正则表达式的使用非常普遍,尤其是在数据验证方面。通过使用正则表达式,可以有效地检查字符串是否符合预期的模式,这对于表单验证、数据清理等场景非常有用。 #### 示例一:身份证号码验证 ...
8. **输入验证与过滤**:防止SQL注入和跨站脚本(XSS)攻击的关键在于有效验证和过滤用户输入。Java提供了多种工具和库,如OWASP Java Encoder库,帮助开发者进行安全的输入处理。 9. **代码签名与数字签名**:代码...
加密信息过滤技术通过加密手段验证邮件发送者的身份,防止垃圾邮件的发送。该方法通常涉及到公钥密码学技术,例如使用数字签名和证书来验证邮件的真实性。尽管这种方法能够提高邮件的安全性,但由于增加了额外的计算...
当跳过HTTPS的SSL验证时,Android应用会忽略服务器的证书验证,允许与任何服务器建立连接,无论其证书是否有效或是否由可信任的CA签发。这可能导致以下风险: 1. **数据泄露**:由于没有加密,通信内容可能被第三方...
数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
Java安全解决方案是针对Java编程语言在开发和运行过程中可能遇到的各种安全问题而设计的一系列防护措施和最佳实践。Java作为一种跨平台的语言,其安全性对于保护用户数据、防止恶意攻击至关重要。本节将深入探讨Java...
"Yale CAS SSO JAVA Client" 是一个专为Java应用程序设计的身份验证服务,它利用了耶鲁大学开发的中央认证服务(Central Authentication Service, CAS)。CAS是一种开放源代码的单点登录(Single Sign-On, SSO)框架...
- **验证安装**:通过在命令行输入`java -version`和`javac -version`,检查Java和Java编译器是否已正确安装和配置。 3. **开发与运行:** - **使用IDE**:大多数开发者会选择使用集成开发环境(IDE),如...
5. **安全与认证**:如果代理服务器需要支持HTTPS(HTTP的安全版本),则需要处理SSL/TLS协议,进行证书验证和加密通信。此外,对于需要身份验证的代理服务器,还需要实现认证机制,如基本认证或digest认证。 6. **...
2. **搜索目录**: 使用LdapContext的search()方法,指定搜索基DN(Distinguished Name)、过滤器和搜索控制。 3. **添加条目**: 使用LdapContext的bind()方法可以将新的条目添加到目录中。 4. **删除条目**: 使用...
- `java.security.cert`包:处理数字证书和证书路径验证。 - `java.net`包:提供了SSL(Secure Socket Layer)和TLS(Transport Layer Security)支持,用于加密网络通信。 3. **API实现**: - 密码学服务提供者...
在Java中,可以使用预编译语句(PreparedStatement)来防止SQL注入,同时对用户输入进行严格的过滤和转义处理,避免XSS攻击。对于更高级的防护,Spring框架提供的Web安全模块可以自动处理这些常见的安全问题。 除了...