Jetty - SSL Websocket客户端
问题描述:
我有一个websocket服务器(jetty 9.0.1.v20130408的API),它没有ssl就可以正常工作。现在我配置我的服务器是这样的:Jetty - SSL Websocket客户端
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没有一个有效的密钥库。当我设置keystore时,然后我得到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),但它也没有这样工作;
新增:
我产生我的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? – 2013-04-29 18:21:21
SSL对我而言是新的。所以我使用keytool生成了像keystore.jks,truststore.jks和certifcate.cert这样的文件。为了生成文件,我按照教程:http://www.techbrainwave.com/?p=953。现在我正在为客户端和服务器使用相同的文件。 – Salvadora 2013-04-29 18:58:59
我将用于生成文件的keytool命令添加到我的第一篇文章中。 – Salvadora 2013-04-29 19:35:29