Keystore 与 trustStore
1. 创建 trustStore
顾名思义,trustStore 持有您所信任的 Queue Manager 签名 CA 所颁发的证书。这意味着当 Java/JMS 客户端连接到 Queue Manager 时,它需要将其证书发送给我们作为初始 SSL 握手的一部分。负责处理所有 SSL 通信的 Java Secure Socket Extension (JSSE) 将通过查找 trustStore 来验证刚刚发送的证书。如果无法验证该证书,则连接将被终止。
要创建 trustStore 并导入证书,您可以使用 IBM Key Management 工具,该工具是 Websphere MQ V6 的一部分:
2. 创建 keyStore
连接到 Queue Manager 后,如果您希望创建客户端身份验证,请完成这一部分的操作。如果还未在该通道上指定客户端身份验证,则不需要完成这一部分所描述的操作。
keyStore 在本质上与 trustStore 相同,但它还持有客户端的个人证书,并且 JSSE 需要使用密码访问。实际上,您可以把个人证书添加到刚才创建的 trustStore 中,它既可以用于 trustStore 也可以用于 keyStore,但以前不需要设置的密码现在需要传递给 JSSE,以使它能够访问您的个人证书。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* JAVA操作SSL协议,通过Socket访问Https的程序代码例子。
*
* @author JAVA世纪网(java2000.net)
*
*/
public class ReadHttpsURL {
// 默认的HTTPS 端口
static final int HTTPS_PORT = 443;
public static void main(String argv[]) throws Exception {
// 受访主机
String host = "www.google.com";
// 受访的页面
String url = "/adsense/?sourceid=aso&subid=ZH_CN-ET-AS-ADSBY6&medium=link&hl=zh_CN";
// 自定义的管理器
X509TrustManager xtm = new Java2000TrustManager();
TrustManager mytm[] = { xtm };
// 得到上下文
SSLContext ctx = SSLContext.getInstance("SSL");
// 初始化
ctx.init(null, mytm, null);
// 获得工厂
SSLSocketFactory factory = ctx.getSocketFactory();
// 从工厂获得Socket连接
Socket socket = factory.createSocket(host, HTTPS_PORT);
// 剩下的就和普通的Socket操作一样了
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.write("GET " + url + " HTTP/1.0\n\n");
out.flush();
System.out.println("start work!");
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line + "\n");
}
out.close();
in.close();
System.out.println(sb.toString());
}
}
/**
* 自定义的认证管理类。
*
* @author JAVA世纪网(java2000.net)
*
*/
class Java2000TrustManager implements X509TrustManager {
Java2000TrustManager() {
// 这里可以进行证书的初始化操作
}
// 检查客户端的可信任状态
public void checkClientTrusted(X509Certificate chain[], String authType) throws CertificateException {
System.out.println("检查客户端的可信任状态...");
}
// 检查服务器的可信任状态
public void checkServerTrusted(X509Certificate chain[], String authType) throws CertificateException {
System.out.println("检查服务器的可信任状态");
}
// 返回接受的发行商数组
public X509Certificate[] getAcceptedIssuers() {
System.out.println("获取接受的发行商数组...");
return null;
}
}
分享到:
相关推荐
在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP的安全协议,它通过SSL/TLS(Secure Sockets Layer/Transport Layer Security)提供加密处理、服务器身份验证和消息完整性检查,以保护...
Java中的SSL(Secure Socket Layer)和HTTPS(Hypertext Transfer Protocol Secure)协议是网络通信安全的重要组成部分,尤其在处理敏感信息如用户登录凭证、支付数据等时,它们提供了必要的加密和身份验证机制。...
Java HTTPS SSL 实例详解 一、HTTPS 简介 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的 HTTP 协议,通过在 HTTP 和 TCP 之间添加一个安全层(SSL/TLS),使得数据传输更加...
java信任SSL证书的工具类 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
Java SSL(Secure Socket Layer)套接字是一种用于在两个应用程序之间建立安全通信通道的协议,主要目的是为了确保数据传输的安全性。SSL通过使用加密技术来保护数据,防止未经授权的访问和篡改。在Java中,我们可以...
标题中的“ssl.tar.gz_URL HTTPS_https_https java_https ssl_java https”揭示了我们将讨论的是与HTTPS相关的Java编程实践,特别是关于URL连接的使用。 HTTPS的主要作用是确保网络通信的安全性,通过加密数据来...
本文将深入探讨"android+java ssldemo"中的核心知识点,包括SSL/TLS协议的工作原理、双向认证的概念以及在华为手机上进行性能测试的考虑。 首先,SSL/TLS协议是互联网上保障数据传输安全的重要机制,它通过加密通信...
Java 实现 SSL(Secure Socket Layer)协议主要用于在网络通信中提供安全性和私密性,它通过加密数据和验证身份来确保信息在互联网上的安全传输。在Java中,SSL协议的实现主要依赖于`java.security`和`javax.net.ssl...
springboot3.2.7 基于java17 ,测试https 接口,基于 RestTemplate 实现
本文将详细介绍如何在Java中实现支持HTTPS的POST请求,包括如何处理SSL证书校验问题。 首先,理解HTTPS的工作原理至关重要。HTTPS基于SSL/TLS协议,它在HTTP层和TCP/IP层之间添加了一个安全层,用于加密数据传输并...
总结,HTTPS通过SSL/TLS协议提供了网络通信的安全保障,包括数据加密、服务器身份验证等,Java提供了丰富的API支持开发者实现安全的HTTPS连接。在实际应用中,合理配置和管理证书,以及了解SSL/TLS的工作原理,对于...
`SSLSocket`是Java标准库`javax.net.ssl`包的一部分,主要应用于HTTPS、SMTPS等需要安全通信的协议中。本文将深入探讨`SSLSocket`的使用方法和相关知识点。 首先,我们了解`SSLSocket`的基本概念。`SSLSocket`是在...
在"java_ssl.rar_JAVA SSL _The Client_ssl_ssl java"这个压缩包中,可能包含的是关于Java SSL连接服务器和客户端的相关教程或代码示例。 首先,我们来详细了解一下Java中的SSL连接过程: 1. **握手阶段**:当...
标题"SSL.rar_JAVA SSL _ssl_ssl java"表明这个压缩包包含的是关于Java中实现SSL/TLS协议的示例代码,可能是服务器端和客户端的简单实现。 描述中提到"SSL加密简单的服务端和客户端书写.希望对大家有所帮助",这...
Java中的SSL双向认证是一种安全通信机制,用于确保服务器和客户端之间的通信不仅加密,而且双方的身份都得到验证。这种机制在需要高安全性交互的应用场景中,如金融交易、企业内部网络通信等,尤其重要。 SSL...
SSL跳过证书 java ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom()); // SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory( // ctx, NoopHostnameVerifier.INSTANCE)...
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
在Java中,HTTPS访问涉及到`java.net.URL`,`java.net.HttpURLConnection`以及可能的`javax.net.ssl.SSLContext`和`TrustManager`类。 1. **配置SSL上下文**: 当你访问HTTPS站点时,Java默认的TrustStore可能不...