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请求工具类 支持SSL。 自定义请求方式 GET POST... 微信自用, 发Https请求工具类,支持SSL SSL Https
Java中的SSL及HTTPS协议实例源码
java信任SSL证书的工具类 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
java https ssl 实例 例子
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
NULL 博文链接:https://1002878825-qq-com.iteye.com/blog/1838805
基于java的开发源码-SSL及HTTPS协议实例源码.zip 基于java的开发源码-SSL及HTTPS协议实例源码.zip 基于java的开发源码-SSL及HTTPS协议实例源码.zip 基于java的开发源码-SSL及HTTPS协议实例源码.zip 基于java的开发...
SAP SSL HTTPS 开启安全连接
主要介绍了java开发https请求ssl不受信任问题解决方法,具有一定借鉴价值,需要的朋友可以参考下
java 支持SSL/TLS协议 支持HTTPS
SSL跳过证书 java ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom()); // SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory( // ctx, NoopHostnameVerifier.INSTANCE)...
Java中的SSL及HTTPS协议实例源码.zip
Java中的SSL及HTTPS协议实例源码,使用SSL套接字的HTTPS服务器端,接受客户端的一个连接
手把手教你搭建https服务器,部署ssl证书到php java服务器(Nginx-Apache PHP-Tomcat java+SSL证书) 1.购买免费的SSL证书 2.下载SSL证书 3.往nginx上新增ssl 4.往Apache上新增ssl 5.往Tomcat上新增ssl 6.解决警告 7....
NULL 博文链接:https://410063005.iteye.com/blog/1751243
主要介绍了Java实现SSL双向认证的方法,实例分析了ssl认证的原理与相关实现技巧,需要的朋友可以参考下
Java Https请求,跳过证书,直接访问 相关jar包全有 直接下载就能调试
Java中的SSL及HTTPS协议实例源码.rar