-
Notifications
You must be signed in to change notification settings - Fork 191
How to enable WSS
Thomas Volden edited this page Sep 14, 2017
·
11 revisions
In order to create a secure channel, you have to provide the server with a certificate. Once this is done, you should be able to start the server as normal.
The following code is taken from a Java-Websocket example:
https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLServerExample.java
// load up the key store
String STORETYPE = "JKS";
String KEYSTORE = "keystore.jks";
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 );`
Once you have the certificate as a SSLContext, you can enable WSS.
I have modified the default example code to demonstrate:
server = new JSONServer(core);
server.enableWSS(sslContext); // Provide certificate to enable WSS
server.open("localhost", 8887, new ServerEvents() {
@Override
public void newSession(UUID sessionIndex, SessionInformation information) {
// sessionIndex is used to send messages.
System.out.println("New session " + sessionIndex + ": " + information.getIdentifier());
}
@Override
public void lostSession(UUID sessionIndex) {
}
});