OpenSSL Java安全提供程序
我必须使用双向ssl身份验证(即使用客户端证书)从java小程序连接到soap Web服务。另外,我必须使用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()
# 1 楼答案
您可以尝试使用JuiCE(http://incubator.apache.org/projects/juice.html),它是一个利用OpenSSL的JCE提供者。但由于缺乏社区兴趣,该项目于2007年10月18日退役