【问题标题】:Jetty - SSL Websocket ClientJetty - SSL Websocket 客户端
【发布时间】:2013-04-29 18:16:04
【问题描述】:

我有一个 websocket 服务器(码头 9.0.1.v20130408 的 API),它在没有 ssl 的情况下运行良好。现在我这样配置我的服务器:

SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("/src/main/resources/keystore.jks");
sslContextFactory.setKeyStorePassword(password); 
sslContextFactory.setTrustStorePath("/src/main/resources/truststore.jks");
sslContextFactory.setTrustStorePassword(password); 
ConnectionFactory sslConnFactory = new SslConnectionFactory(sslContextFactory, "http/1.1);
connector.addConnectionFactory(sslConnFactory);
server.addConnector(connector);

不,我尝试配置客户端。我想,在客户端我需要设置 truststore.jks 的路径和密码。但是后来我在 client.start() 上得到了异常:SSL 没有有效的密钥库。当我设置密钥库时,我会进入 client.connect java.nio.channels.WritePendingException。这是我的客户的代码:

WebSocketClient client = new WebSocketClient(sslContextFactory);
URI wssUri = new URI("wss://localhost:"+port);
sslContextFactory.start();
client.start();
client.connect(myClientSocket, wssUri);

有人可以帮我吗?我也尝试在服务器端设置 setWantClientAuth(false) 和 setTrustall(true),但它也没有这样工作;

添加:

我使用 keytool 生成我的 ssl 文件。

$ keytool -genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore keystore.jks 
$ keytool -export -alias certificatekey -keystore keystore.jks -rfc -file selfsignedcert.cer
$ keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore.jks

【问题讨论】:

  • 您是否尝试使用客户端证书?还是只是标准的 SSL?
  • SSL 对我来说是新的。因此,我使用 keytool 生成了 keystore.jks、truststore.jks 和 certifcate.cert 等文件。为了生成文件,我遵循了教程:techbrainwave.com/?p=953。现在我为客户端和服务器使用相同的文件。
  • 我将用于生成文件的 keytool 命令添加到我的第一篇文章中。

标签: websocket jetty embedded-jetty


【解决方案1】:

这是因为 UpgradeRequest 被发送了两次,据报道here

您现在可以忽略该警告。发布时使用 9.0.4 即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多