原文出处:http://ms.mblogger.cn/veaven/posts/18276.aspx
今天遇到了一个JAVA客户端连接SSL的问题,查了一下javax.net.ssl.HttpsURLConnection的使用,查到这篇不错的文章,转载一下。
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.DataOutputStream;
import java.net.HttpURLConnection;
import org.apache.xerces.impl.dv.util.Base64;
/**
* @author lyw
*/
public class ssltest {
protected String connect(String strUrl) {
trustAllHttpsCertificates();
HttpsURLConnection.setDefaultHostnameVerifier(hv);
URL url = new URL(strUrl);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
连接到HTTPS服务器
......
}
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName + " vs. "
+ session.getPeerHost());
return true;
}
};
private static void trustAllHttpsCertificates() throws Exception {
// Create a trust manager that does not validate certificate chains:
javax.net.ssl.TrustManager[] trustAllCerts =
new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new miTM();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc =
javax.net.ssl.SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(
sc.getSocketFactory());
}
public static class miTM implements javax.net.ssl.TrustManager,
javax.net.ssl.X509TrustManager {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) throws
java.security.cert.CertificateException {
return;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) throws
java.security.cert.CertificateException {
return;
}
}
}
分享到:
相关推荐
这个端点URI将成为客户端连接的目标地址。 4. **OnOpen、OnClose、OnMessage方法**: 在服务端,你可以定义`onOpen`、`onClose`和`onMessage`方法来处理客户端的打开连接、关闭连接和接收到的消息事件。例如: ```...
本主题将深入探讨如何在Eclipse中开发Java客户端和服务器代码,以及如何进行交互。 首先,让我们了解客户端和服务器的基本概念。客户端是发起请求的程序,而服务器则是接收并响应这些请求的程序。在Java中,我们...
7. **安全性**:考虑到网络安全,开发者可能还会介绍如何在Java客户端服务器程序中添加加密和身份验证机制,如SSL/TLS协议和数字证书。 通过阅读这篇学习笔记,你可以掌握Java客户端服务器编程的基本概念和实践技巧...
3. 循环接收客户端连接,创建SSLSocket进行数据交互。 4. 对SSLSocket进行读写操作,注意使用其特有的`getInputStream()`和`getOutputStream()`方法,而非普通Socket的`getInputStream()`和`getOutputStream()`。 ...
在本主题中,我们将深入探讨如何通过Java(Java Archive,简称JAR)程序包实现SQLSERVER客户端与服务器之间的SSL安全连接。 首先,理解SSL协议的基础知识是非常必要的。SSL是一种网络协议,用于在互联网上提供安全...
在Java中,实现基于SSL/TLS的FTP客户端需要创建`SSLSocket`连接到服务器,并进行必要的握手过程。服务器端则需创建`SSLServerSocket`来监听连接,并处理客户端的认证请求。整个过程涉及SSL/TLS的初始化、证书管理、...
通过上述步骤,我们可以实现Java客户端和服务器之间的SSL双向认证。在实际应用中,这可以确保数据传输的隐私和完整性,提高系统的安全性。在进行开发时,要时刻关注安全最佳实践,以防止潜在的安全风险。SSL双向认证...
希望对大家有所帮助",这暗示了压缩包内的SSLServer.java和SSLClient.java是两个关键文件,分别代表了SSL服务端和客户端的程序示例,用于展示如何在Java中配置和使用SSL连接。 SSLServer.java文件很可能是实现一个...
下面将详细讲解如何使用 Java 客户端源码连接阿里云的 MQTT 服务。 首先,我们需要了解 MQTT 协议的基本概念。MQTT 是一个轻量级的消息发布/订阅协议,设计思想是开放、简单、小巧且易于实现。它使用 TCP/IP 协议栈...
描述了java程序代码去访问MQ的SSL加密的通道。如何配置JKS,如何配置MQ服务器的SSL秘钥库,如何配置证书制作证书和秘钥库。主要是如何编写java代码去访问SSL通道并取到数据。
本话题聚焦于使用Delphi客户端连接JAVA服务端的技术实现。Delphi,一种强大的面向对象的编程环境,经常用于开发桌面应用程序,而Java则因其跨平台特性在服务端应用广泛。以下将详细介绍如何在Delphi客户端与JAVA...
Java中的SSL连接主要涉及到安全套接层(Secure Socket Layer)技术,用于在互联网上提供安全通信。SSLServerSocket是Java中的一个类,它用于创建服务器端的SSL连接,提供了加密和身份验证的能力,确保数据传输的安全...
SSL加密确保了数据在传输过程中不被窃取或篡改,这对于处理敏感信息如JMX (Java Management Extensions) 管理操作至关重要。 配置RMI以使用SSL加密涉及以下三个主要步骤: 1. **注册基于SSL的RMI Socket Factories...
在Java中,我们可以使用`java.net.Socket`类来创建客户端连接,它代表了两台机器之间的网络连接。Socket编程是基于TCP/IP协议的,确保了数据的可靠传输。要实现FTP客户端,首先需要创建一个Socket连接到FTP服务器,...
java的ssl客户端编程与LINUX的OpenSSL服务器通讯的实现及有关文档 附件中包含本人开发工程中使用过的DEMO程序及制作证书的解本文件
**SSL(Secure Socket Layer)**是一种广泛应用于网络通信的安全协议,用于在客户端和服务器之间建立安全的加密连接,确保数据传输的隐私性和完整性。在Java编程环境中,通过Java的JSSE(Java Secure Socket ...
Java 提供了 SSL SOCKET 编程接口,允许开发者使用 SSL 协议来建立安全连接。Java 的 SSL SOCKET 编程主要包括以下步骤: 1. 创建 SSL SOCKET 对象 2. 建立 SSL 连接 3. 读写数据 十、keytool 证书与密钥管理 ...
通常,SSL/TLS连接采用单向认证,即服务器验证客户端的身份,而客户端不需要验证服务器。但在某些高安全性的场景下,双向认证是必要的,即双方都需要证明自己的身份。这增加了安全性,防止了中间人攻击。 在Java中...
SSL/TLS协议用于在客户端浏览器和服务器之间建立安全的连接,它通过使用公钥和私钥加密技术来保护数据不被中间人攻击。在HTTPS中,SSL/TLS负责加密传输层的数据,而HTTP则处理应用层的通信协议。 接下来,我们来看...