[Java]webSokcet Server

一般程式應用(jar)

參考

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


POM部分

<dependencies>

<dependency>

<groupId>org.java-websocket</groupId>

<artifactId>Java-WebSocket</artifactId>

<version>1.5.1</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.6.6</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-simple</artifactId>

<version>1.7.25</version>

</dependency>

</dependencies>



程式部分

public class SSLServerExample {

        //該伺服器已申請SSL

        //並產出jks文件

/*
使用SSL FOR FREE

下載到三個檔案
certificate.crt
ca_bundle.crt
private.key

轉成pfx
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca_bundle.crt

加密 轉成java使用的jks
keytool -importkeystore -srckeystore certificate.pfx -srcstorepass 密碼 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks -deststorepass 密碼

*/

//2020-11-4測試成功

  public void start() throws Exception {

  //centOS port 盡量用10000以外  避免用到有些特殊使用的port

  //防火牆記得要打開

  

    ChatServer chatserver = new ChatServer(

       30001); // 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", "keystore.jks").toString(); //測試使用路徑

   

    String KEYSTORE = "/etc/httpd/conf/ssl/keystore.jks";//CentOS 路徑

    

    String STOREPASSWORD = "密碼";

    String 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();


  }

}


測試

www.websocket.org/echo.html

留言

這個網誌中的熱門文章

[JSP]WebSocket