2
我有一個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