我已经构建了一个Java程序作为服务器上的数据库的前端,我试图使用SSL来加密客户端和服务器之间的流量。这是我发出创建服务器证书的命令:
keytool -genkey -alias localhost -keyalg RSA -keypass kpass123 -storepass kpass123 -keystore keystore.jks
这里是相关的代码:
System.setProperty("javax.net.ssl.keyStore",
"G:/Data/Android_Project/keystore.jks");
System.setProperty("javax.net.ssl.keyPassword", "kpass123");
SSLServerSocketFactory factory =
(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
SSLServerSocket accessSocket =
(SSLServerSocket)factory.createServerSocket(DB_ACCESS_PORT);
当我试图运行这个,我抓住这:
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
我还发现“KeyPairGenerator”服务有算法DIFFIEHELLMAN,DSA,RSA可用,而“SSLContext”有算法SSL,TLS,SSLV3,DEFAULT,TLSV1。
我需要找到一些方法来安装RSA到SSLContext服务?我甚至看到正确的服务吗?我应该不使用RSA吗?
我是新的整个SSL – 安全 – 证书的东西,它只是让我想起,每个这些不同的服务没有相同的算法,当他们应该访问相同的证书。