【问题标题】:OpenSSL Java security providerOpenSSL Java 安全提供程序
【发布时间】:2014-06-05 09:21:35
【问题描述】:

我必须通过双向 ssl 身份验证(即使用客户端证书)从 java 小程序连接到 soap webservice。另外,我必须使用 openssl

我正在尝试使用该代码(来源 - https://sites.google.com/site/ssljavaguide/example-code/2-way-ssl):

try{
    // necessary keystore properties - using a p12 file
    System.setProperty("javax.net.ssl.keyStore","client_keystore.p12");
    System.setProperty("javax.net.ssl.keyStorePassword","01234543210");
    System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");

    //set necessary truststore properties - using JKS
    System.setProperty("javax.net.ssl.trustStore","truststoreCA.jks");
    System.setProperty("javax.net.ssl.trustStorePassword","pleas3w0rk");
    // register a https protocol handler  - this may be required for previous JDK versions
    System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");

    //connect to google   
    SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
    SSLSocket sslSock = (SSLSocket) factory.createSocket("mail.google.com",443);

    //send HTTP get request
    BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sslSock.getOutputStream(), "UTF8"));
    wr.write("GET /mail HTTP/1.1\r\nhost: mail.google.com\r\n\r\n");
    wr.flush();

    // read response
    BufferedReader rd = new BufferedReader(new InputStreamReader(sslSock.getInputStream()));
    String string = null;

    while ((string = rd.readLine()) != null) {
        System.out.println(string);
        System.out.flush();
    }

    rd.close();
    wr.close();

    // Close connection.
    sslSock.close();

}
catch(Exception ex){
    System.out.println(ex.getMessage());
}

是否有java.security.Provider 实现,使用openssl 库,我可以放入函数Security.addProvider()

【问题讨论】:

  • 为什么你认为你必须使用 OpenSSL? Java 的 JSSE 可以毫无问题地与 OpenSSL 通信。
  • 感谢您的回复。如何从openssl获取算法? Java Security 类看不到其中的一些。
  • @SomeUser 不是要求使用 OpenSSL,而是要求使用这些算法,否则,您的观点不清楚。
  • 我需要使用 GOST 算法。但是,我必须使用 OpenSSL,而不是其他一些实现。
  • 我需要使用 OpenSSL,因为该程序的某些版本已通过认证 (cryptocom.ru/products/cryptopacket.html)。

标签: java security applet openssl client-certificates


【解决方案1】:

您可以尝试使用 JuiCE (http://incubator.apache.org/projects/juice.html),它是一个使用 OpenSSL 的 JCE 提供程序。但由于缺乏社区利益,该项目于 2007 年 10 月 18 日退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 2016-02-29
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2013-10-27
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多