前言
最近項目在升級為 https 朋截,先把一些常規(guī)的模塊(頁面童芹,服務(wù)等部署在 tomcat 中的)升級了,利用 ssl 證書通過 tomcat 重定向到 443(默認) 端口就解決了驹溃,但是有一個 springboot 寫的 netty-socketio 的聊天服務(wù)也要升級含鳞,剛開始思路錯了以為也要 tomcat 重定向端口影锈,折騰了半天不行;最后看到一篇文章只是在 socketio 的 configuration 中設(shè)置證書參數(shù)就行了⊙﹏⊙‖∣蝉绷,因為踩了坑所以記錄一下鸭廷,以備不時之需。
這里默認已經(jīng)有一個用 springboot 寫好的 netty-socketio 項目了(網(wǎng)上有很多)熔吗,并且有一個 jks 類型的證書文件(如何獲得網(wǎng)上也有很多)
然后才開始配置 https辆床。
一、將證書文件(jks)拷貝到 springboot 項目的 resource 目錄下
二桅狠、不用修改任何文件讼载,只是在 socketio 的 configuration 中設(shè)置證書
修改前:
@Bean(name = "configuration")
public com.corundumstudio.socketio.Configuration getCofiguration() {
com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();
//服務(wù)器主機ip,這里配置本機
config.setHostname("172.18.211.50");
// config.setHostname("192.168.3.88"); // 本機
// config.setHostname("120.78.145.39");
// System.out.println(setHostname);
//端口中跌,任意
config.setPort(9108);
config.setMaxFramePayloadLength(1024 * 1024);
config.setMaxHttpContentLength(1024 * 1024);
return config;
}
修改后:
@Bean(name = "configuration")
public com.corundumstudio.socketio.Configuration getCofiguration() {
com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();
//服務(wù)器主機ip咨堤,這里配置本機
config.setHostname("172.18.211.50");
// config.setHostname("192.168.3.88"); // 本機
// config.setHostname("120.78.145.39");
// System.out.println(setHostname);
//端口,任意
config.setPort(9108);
config.setMaxFramePayloadLength(1024 * 1024);
config.setMaxHttpContentLength(1024 * 1024);
InputStream resourceAsStream = this.getClass().getResourceAsStream("/chuniaoedukey.jks"); // 讀取證書文件流
config.setKeyStore(resourceAsStream); // 設(shè)置證書文件
config.setKeyStorePassword("cqrrkj2020"); // 設(shè)置證書密碼
return config;
}
三漩符、linux 部署 springboot 項目
# 設(shè)置輸出目錄 啟動 springboot jar
nohup java -jar xxx.jar > catalina.out 2>&1 &
最后一喘,通過 https://one.test.com:9108(虛擬的域名,改成自己的) 連接就行了嗜暴,以前是連接 http://one.test.com:9108凸克,注意直接瀏覽器訪問會報400的錯誤因為這是 socketio 監(jiān)聽的端口不能直接以接口的形式對其訪問,只能用 socketio 客戶端進行測試驗證闷沥。
總結(jié)
netty-socketio 服務(wù)與其他的接口服務(wù)有些異同萎战,不能通過 tomcat 轉(zhuǎn)發(fā)端口的形式進行 https 訪問,但是 netty-socketio 內(nèi)部對 https 支持舆逃,直接簡單設(shè)置證書信息就能實現(xiàn)蚂维。