如何在eclipse中将服务器证书添加到java应用程序中

时间:2012-10-07 19:23:24

标签: java ssl ssl-certificate keytool jsse

我有一个服务器应用程序使用:

import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;

这是一个java应用程序,它本身就是一个服务器 - 我没有使用任何虚拟服务器,也不是Web应用程序。它应该从客户端应用程序接收连接并处理它们的请求。客户端应用程序和数据库之间的夹层。

在启动时它会运行,但会一直发送垃圾邮件(导致while(true){})此错误:

javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
    at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(Unknown Source)

因此,我查找了一些SSL证书创建指南,并使用这些命令制作了证书:

keytool -genkey -alias serverprivate -keystore servestore -keyalg rsa -keysize 2048
keytool -export -alias serverprivate -keystore servestore -rfc -file server.cer

并将其导入我的本地证书存储区,因此我可以使用我的客户端应用程序进行测试:

keytool -import -alias trustservercert -file server.cer -keystore clienttruststore

所有这些都是在我的$ JAVA_HOME \ bin目录中完成的。我还用

更新了我的eclipse.ini文件
-vm
$JAVA_HOME\bin\javaw.exe

所以eclipse将使用我的jdk7虚拟机来运行应用程序。

同时我尝试将server.cerservestore文件复制到$ ECLIPSE_HOME和应用程序主目录中。

结果是:相同的错误消息。它不会阻止应用程序运行,但它仍然存在。

非常感谢这里的一些帮助。我究竟做错了什么?也许有一个很酷的,详细的,新手友好的指南,用于创建使用SSL的应用程序,这是我找不到的?

1 个答案:

答案 0 :(得分:5)

您必须将这些参数添加到您的jvm启动。

-Djavax.net.ssl.trustStore="<path to truststore>"
-Djavax.net.ssl.trustStorePassword=password

如果您需要有关Java和SSL的更多详细信息,请查看this