`
ming_fanglin
  • 浏览: 225030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
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;       
  }       
}     

分享到:
评论
1 楼 qianzhiyong 2012-09-03  
不错,刚好用到,谢谢!

相关推荐

    Java发 Https请求工具类 支持SSL

    在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP的安全协议,它通过SSL/TLS(Secure Sockets Layer/Transport Layer Security)提供加密处理、服务器身份验证和消息完整性检查,以保护...

    Java中的SSL及HTTPS协议实例源码

    Java中的SSL(Secure Socket Layer)和HTTPS(Hypertext Transfer Protocol Secure)协议是网络通信安全的重要组成部分,尤其在处理敏感信息如用户登录凭证、支付数据等时,它们提供了必要的加密和身份验证机制。...

    java https ssl 实例 例子

    Java HTTPS SSL 实例详解 一、HTTPS 简介 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的 HTTP 协议,通过在 HTTP 和 TCP 之间添加一个安全层(SSL/TLS),使得数据传输更加...

    java信任SSL证书的工具类

    java信任SSL证书的工具类 忽略HTTPS请求的SSL证书,必须在openConnection之前调用

    ssl.tar.gz_URL HTTPS_https_https java_https ssl_java https

    标题中的“ssl.tar.gz_URL HTTPS_https_https java_https ssl_java https”揭示了我们将讨论的是与HTTPS相关的Java编程实践,特别是关于URL连接的使用。 HTTPS的主要作用是确保网络通信的安全性,通过加密数据来...

    JAVA实现SSL协议

    在实际应用中,开发者可能需要编写代码来创建和配置SSL连接,例如创建一个支持双向认证的HTTPS服务器,或者一个安全的SSL客户端。这通常涉及到读取和解析证书、密钥库,以及创建KeyManager和TrustManager实例。 总...

    java支持https的Post请求

    本文将详细介绍如何在Java中实现支持HTTPS的POST请求,包括如何处理SSL证书校验问题。 首先,理解HTTPS的工作原理至关重要。HTTPS基于SSL/TLS协议,它在HTTP层和TCP/IP层之间添加了一个安全层,用于加密数据传输并...

    java17 https 忽略ssl认证, httpclient5 ,springboot3.2.7 脚手架

    springboot3.2.7 基于java17 ,测试https 接口,基于 RestTemplate 实现

    java_https_ssl

    总结,HTTPS通过SSL/TLS协议提供了网络通信的安全保障,包括数据加密、服务器身份验证等,Java提供了丰富的API支持开发者实现安全的HTTPS连接。在实际应用中,合理配置和管理证书,以及了解SSL/TLS的工作原理,对于...

    java_ssl.rar_JAVA SSL _The Client_ssl_ssl java

    SSL协议主要用于保护HTTP协议,形成HTTPS,以确保诸如网上银行、电子商务交易等敏感信息的安全。在"java_ssl.rar_JAVA SSL _The Client_ssl_ssl java"这个压缩包中,可能包含的是关于Java SSL连接服务器和客户端的...

    Java SSLSocket的使用

    `SSLSocket`是Java标准库`javax.net.ssl`包的一部分,主要应用于HTTPS、SMTPS等需要安全通信的协议中。本文将深入探讨`SSLSocket`的使用方法和相关知识点。 首先,我们了解`SSLSocket`的基本概念。`SSLSocket`是在...

    Java中的SSL及HTTPS协议实例源码.zip

    Java中的SSL(Secure Socket Layer)和HTTPS(Hypertext Transfer Protocol Secure)协议是网络通信安全的重要组成部分,尤其在处理敏感信息如用户登录凭证、交易数据等时,它们扮演着至关重要的角色。SSL是一种用于...

    java访问https网址下载文件(含证书)

    在Java中,HTTPS访问涉及到`java.net.URL`,`java.net.HttpURLConnection`以及可能的`javax.net.ssl.SSLContext`和`TrustManager`类。 1. **配置SSL上下文**: 当你访问HTTPS站点时,Java默认的TrustStore可能不...

    java 调用https webservice实例及axis包

    在Java中,通过`javax.net.ssl`包提供的类可以支持HTTPS连接。 Apache Axis是一款开源的Web Service框架,它使得Java开发者能够方便地创建和调用Web Service。对于HTTPS的支持,Axis提供了相应的配置和工具。 调用...

    Java Https请求,跳过证书,直接访问

    在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种用于在互联网上安全传输数据的协议,它基于HTTP,但提供了额外的安全性层,通过SSL/TLS(Secure Sockets Layer/Transport Layer Security)来加密...

    Java实现SSL双向认证的方法

    Java中的SSL双向认证是一种安全通信机制,用于确保服务器和客户端之间的通信不仅加密,而且双方的身份都得到验证。这种机制在需要高安全性交互的应用场景中,如金融交易、企业内部网络通信等,尤其重要。 SSL...

    SSL跳过证书 java

    SSL跳过证书 java ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom()); // SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory( // ctx, NoopHostnameVerifier.INSTANCE)...

    ssl_java.zip

    在实际项目中,需要根据具体需求进行调整和优化,例如使用NIO进行异步通信,或者使用HTTPS在Web服务中实现SSL。在处理SSL连接时,还要注意性能和安全性之间的平衡,避免过度加密导致的性能下降。

    javaSSL.zip

    Java平台提供了对SSL/TLS协议的支持,使得开发者能够构建安全的HTTPS服务或者实现其他基于SSL/TLS的应用。 在Java中,SSL/TLS主要通过JSSE(Java Secure Socket Extension)来实现。JSSE是Java平台的一部分,它为...

Global site tag (gtag.js) - Google Analytics