转换程序以通过 java-websockets 库使用安全套接字连接

问题描述

我正在尝试转换使用 org.java-websocket 库的现有应用程序,以允许网络服务器使用 https 而不是以前的 http 进行通信。经过研究,我能找到的唯一例子在这里

https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLServerExample.java

public static void main(String[] args) throws Exception {
ChatServer chatserver = new ChatServer(
    8887); // Firefox does allow multible ssl connection only via port 443 //tested on FF16

// load up the key store
String STORETYPE = "JKS";
String KEYSTORE = Paths.get("src","test","java","org","java_websocket","keystore.jks")
    .toString();
String STOREPASSWORD = "storepassword";
String KEYPASSWORD = "keypassword";

KeyStore ks = KeyStore.getInstance(STORETYPE);
File kf = new File(KEYSTORE);
ks.load(new FileInputStream(kf),STOREPASSWORD.tochararray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks,KEYPASSWORD.tochararray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);

SSLContext sslContext = null;
sslContext = SSLContext.getInstance("TLS");
sslContext.init(kmf.getKeyManagers(),tmf.getTrustManagers(),null);

chatserver.setWebSocketFactory(new DefaultSSLWebSocketServerFactory(sslContext));

chatserver.start();

}

唯一的问题是我很犹豫,因为它似乎希望您访问 keystore.jks 并提供存储密码 + 密钥密码,并且似乎还希望 KeyStore 文件位于正在运行的计算机上(或随软件发布的某个地方)。这不是安全风险吗?

我已经用密钥库对 jar 进行了签名,也许我不需要做更多的事情了?如果这不是这样做的方法,有人可以给我指出一个不同的例子吗?

我使用的这个密钥库是由一家外部公司提供给我们的,用于签署我们的 Java 应用程序。也许这不是我应该使用的密钥库,需要独立于那个应用程序为这个应用程序创建一个

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)