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

use*_*262 2 java ssl jsse keytool ssl-certificate

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

import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
Run Code Online (Sandbox Code Playgroud)

这是一个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)
Run Code Online (Sandbox Code Playgroud)

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

keytool -genkey -alias serverprivate -keystore servestore -keyalg rsa -keysize 2048
keytool -export -alias serverprivate -keystore servestore -rfc -file server.cer
Run Code Online (Sandbox Code Playgroud)

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

keytool -import -alias trustservercert -file server.cer -keystore clienttruststore
Run Code Online (Sandbox Code Playgroud)

所有这些都是在我的$ JAVA_HOME\bin目录中完成的.我还更新了我的eclipse.ini文件

-vm
$JAVA_HOME\bin\javaw.exe
Run Code Online (Sandbox Code Playgroud)

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

同时,我试图复制server.cerservestore文件到这两个$ ECLIPSE_HOME和应用程序的主目录.

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

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

dng*_*fng 5

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

-Djavax.net.ssl.trustStore="<path to truststore>"
-Djavax.net.ssl.trustStorePassword=password
Run Code Online (Sandbox Code Playgroud)

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