You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE4.24源码编译HTML5时如何为CentOS8.3服务器的libwebsockets启用SSL

问题解答

编译相关疑问解答

1. 能否通过设置SSL编译标志+HTML5Setup.sh全量编译实现需求?

不能。HTML5Setup.sh是UE针对Web/HTML5平台的依赖编译脚本,和你要构建的Linux专属服务器目标无关。
正确的编译标志配置流程如下:

  • 首先在你专属服务器的*.Target.cs文件中添加全局定义:
    GlobalDefinitions.Add("WITH_SSL=1");
    bEnableSSL = true;
    
  • 你之前修改的WebSockets.Build.cs代码逻辑正确,但是需要先清理引擎缓存:删除Engine/Intermediate、Engine/Binaries/ThirdParty/libwebsockets目录下对应Linux平台的所有中间文件和旧库文件,再触发编译,才会重新走libwebsockets的带SSL编译流程。

2. 能否通过Visual Studio项目/引擎层面配置实现需求?

可以,无需手动执行第三方库的编译脚本,UE的UnrealBuildTool(UBT)会自动处理依赖编译:

  • 完成上述*.Target.cs的配置修改后,在Visual Studio的解决方案资源管理器中,右键你的专属服务器构建目标,选择清理,再选择生成即可。
  • 你遇到的libwebsockets编译失败问题,大概率是Windows上安装的Linux跨平台编译工具链版本和当前UE版本不匹配导致,请优先安装UE官方对应版本的Linux cross-compile工具链。如果仍编译失败,可以直接在CentOS 8.3环境下编译好带SSL支持的libwebsockets静态库,替换到引擎Engine/Source/ThirdParty/libwebsockets/lib/Linux/x86_64-unknown-linux-gnu目录下,跳过UE的自动编译流程。

SSL证书配置方式

编译完带SSL支持的版本后,证书无需在编译环节配置,在服务端运行环节配置即可,有两种实现方式:

  • 命令行参数配置:启动专属服务器时添加启动参数
    ./你的服务端进程 -SSLcertificate=/path/域名.crt -SSLprivatekey=/path/私钥.key -SSLcaCertificate=/path/CA根证书.pem
    
  • 代码中指定:在服务端初始化WebSocket/HTTP服务的代码中传入证书路径,以UWebSocketsServer为例:
    FWebServerConfig ServerConfig;
    ServerConfig.bUseSSL = true;
    ServerConfig.SSLCertPath = TEXT("/path/域名.crt");
    ServerConfig.SSLPrivateKeyPath = TEXT("/path/私钥.key");
    ServerConfig.SSLCAPath = TEXT("/path/CA根证书.pem");
    auto Server = UWebSocketsServer::CreateServer(ServerConfig);
    

关于无需修改WITH_SSL即可生效的逻辑说明

部分旧版本UE的WebSockets模块Build.cs中内置了自动检测逻辑:如果当前构建目标链接了OpenSSL库,且目标为服务器类平台,会自动添加WITH_SSL=1的编译定义,不需要手动修改配置。因此只要你编译了带SSL支持的libwebsockets和OpenSSL库,UBT会自动开启SSL能力,无需额外修改WITH_SSL相关配置。


内容的提问来源于stack exchange,提问作者Nikola Lukic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:09:03