Linux + SpringBoot + Netty-SocketIo 实现 https 访问

前言

最近项目在升级为 https ,先把一些常规的模块(页面,服务等部署在 tomcat 中的)升级了,利用 ssl 证书通过 tomcat 重定向到 443(默认) 端口就解决了,但是有一个 springboot 写的 netty-socketio 的聊天服务也要升级,刚开始思路错了以为也要 tomcat 重定向端口,折腾了半天不行;最后看到一篇文章只是在 socketio 的 configuration 中设置证书参数就行了⊙﹏⊙‖∣,因为踩了坑所以记录一下,以备不时之需。

这里默认已经有一个用 springboot 写好的 netty-socketio 项目了(网上有很多),并且有一个 jks 类型的证书文件(如何获得网上也有很多)

然后才开始配置 https。

一、将证书文件(jks)拷贝到 springboot 项目的 resource 目录下

证书目录4502.png

二、不用修改任何文件,只是在 socketio 的 configuration 中设置证书

修改前:

@Bean(name = "configuration")
    public com.corundumstudio.socketio.Configuration getCofiguration() {
        com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();
        //服务器主机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();
        //服务器主机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);  // 设置证书文件
        config.setKeyStorePassword("cqrrkj2020");  // 设置证书密码
        return config;
    }

三、linux 部署 springboot 项目

# 设置输出目录 启动 springboot jar
nohup java -jar xxx.jar > catalina.out  2>&1 &

最后,通过 https://one.test.com:9108(虚拟的域名,改成自己的) 连接就行了,以前是连接 http://one.test.com:9108,注意直接浏览器访问会报400的错误因为这是 socketio 监听的端口不能直接以接口的形式对其访问,只能用 socketio 客户端进行测试验证。

总结

netty-socketio 服务与其他的接口服务有些异同,不能通过 tomcat 转发端口的形式进行 https 访问,但是 netty-socketio 内部对 https 支持,直接简单设置证书信息就能实现。

参考:https://blog.csdn.net/csdn_zf/article/details/100152030

你可能感兴趣的:(Linux + SpringBoot + Netty-SocketIo 实现 https 访问)