OpenSSL Java安全提供程序

OpenSSL Java安全提供程序,java,security,applet,openssl,client-certificates,Java,Security,Applet,Openssl,Client Certificates,我必须使用双向ssl身份验证(即使用客户端证书)从java小程序连接到soap Web服务。另外,我必须使用openssl 我正在尝试使用该代码(源代码-): 是否有使用openssl库的java.security.Provider实现,并且我可以将函数security.addProvider()?您可以尝试使用JuiCE()它是一个使用openssl的JCE提供程序。但由于缺乏社区兴趣,该项目于2007年10月18日退役。您认为为什么必须使用OpenSSL?Java的JSSE可以与OpenSS

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

我正在尝试使用该代码(源代码-):


是否有使用openssl库的
java.security.Provider
实现,并且我可以将函数
security.addProvider()

您可以尝试使用JuiCE()它是一个使用openssl的JCE提供程序。但由于缺乏社区兴趣,该项目于2007年10月18日退役。

您认为为什么必须使用OpenSSL?Java的JSSE可以与OpenSSL对话,没有任何问题。谢谢回复。如何从openssl获取算法?Java安全类没有看到其中的一些。@有些用户没有要求使用OpenSSL,而是要求使用这些算法,否则,您的观点不清楚。我需要使用GOST算法。但是,我必须使用OpenSSL,而不是其他一些实现。
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());
}