Spring Boot WebSocket部署后403禁止连接问题及HTTPS配置求助
WebSocket 403禁止连接问题排查及HTTPS部署方案
一、403禁止连接问题定位
根据你更新的信息,其他网络能正常连接,说明服务器本身的WebSocket配置没有问题,问题出在服务器部署的本地网络限制上,建议从以下几点排查:
- 本地防火墙/安全组拦截:检查服务器所在机器的防火墙规则,确保WebSocket使用的端口(默认8080,若自定义端口需对应)已开放入站TCP连接权限。
- 网关/代理限制:部分企业或家庭网络的网关会拦截WebSocket请求(ws/wss协议),或存在HTTP代理规则阻止此类连接。可以先在服务器所在局域网内用客户端直接连接测试,验证局域网内是否能正常通信。
- 冗余配置优化:你的代码中重复注册了同一个WebSocketHandler到
/websocket路径,虽然不影响功能,但可以简化为:
@Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new WebSocketHandler(), "/websocket") .setAllowedOrigins("*") .withSockJS(); }
注:你使用的Spring Boot WebSocket Starter版本(1.1.0.RELEASE)较老,setAllowedOrigins("*")是有效的;若升级到Spring Boot 2.4+,需替换为setAllowedOriginPatterns("*")。
二、配置HTTPS发布服务器
要通过HTTPS发布服务器,按以下步骤操作:
- 生成SSL证书:使用JDK自带的
keytool生成自签名证书(生产环境建议使用CA颁发的正规证书),执行命令:
keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650
按提示输入证书相关信息,记住设置的密钥库密码(示例用password)。
2. 放置证书文件:将生成的keystore.p12文件复制到项目的src/main/resources目录下。
3. 配置HTTPS参数:在application.properties中添加以下配置(若用YAML格式可对应转换):
server.port=8443 server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password=password server.ssl.key-store-type=PKCS12 server.ssl.key-alias=myserver
- 客户端连接调整:服务器重启后,客户端需使用
wss://协议连接WebSocket,示例地址:wss://你的服务器IP:8443/websocket;若使用SockJS,则连接地址为https://你的服务器IP:8443/websocket。
内容的提问来源于stack exchange,提问作者Mohammad Shour
相关产品推荐
相关产品推荐

