我有一个服务器应用程序,它使用:
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虚拟机来运行应用程序。
同时,我尝试将文件复制到 $ECLIPSE_HOME 和应用程序主目录中server.cer
。servestore
结果是:同样的错误信息。它不会阻止应用程序运行,但它仍然存在。
非常感谢这里的一些帮助。我究竟做错了什么?也许有一个很酷、详细、对新手友好的关于使用 SSL 创建应用程序的指南,但我找不到?