Workerman怎样配置SSL实现安全通信

胖强小哥_2800

胖强小哥_2800

2026-06-29

825人浏览

原创

必须显式传入ssl上下文参数并确保证书路径绝对、私钥无密码、verify_peer设为false,否则监听443端口也会触发err_ssl_protocol_error;需启用openssl扩展、workerman≥3.3.7,证书须为pem格式且fullchain.pem含私钥→域名证书→中间证书顺序。

workerman怎样配置ssl实现安全通信

Workerman配置SSL实现安全通信,必须显式传入SSL上下文参数并确保证书路径绝对、私钥无密码、verify_peer设为false,否则即使监听443端口也会触发ERR_SSL_PROTOCOL_ERROR,浏览器直接断连。

确认前提条件

检查PHP是否启用openssl扩展:运行php -m | grep openssl,无输出则需启用;确认Workerman版本≥3.3.7,低于此版本不支持原生SSL;证书文件(.pem或.crt + .key)必须已准备好,且为PEM格式。

【私钥不能带密码】,否则Workerman启动时静默卡死无报错。可用openssl rsa -in server.key -out server-no-pass.key去密。

生成自签名证书(开发测试用)

执行以下三条命令生成server.key和server.crt:

openssl genrsa -out server.key 2048

openssl req -new -key server.key -out server.csr(Common Name填localhost或测试域名)

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

注意:server.crt只含证书,不含私钥;生产环境请用Let's Encrypt等CA签发的fullchain.pem(含域名证书+中间证书),且务必把私钥合并进同一PEM文件或单独提供local_pk。

配置HTTPS服务

方法一:使用WebServer类(推荐,语义清晰)

第一步:引入Autoloader并实例化WebServer,协议写ssl://,端口建议443

第二步:构造时直接传入ssl_context数组,键名必须是ssl_context,不是context或ssl

第三步:指定local_cert为绝对路径的全链证书文件(含私钥+证书+中间证书),local_pk可省略——若私钥已包含在local_cert中;否则必须同时提供且路径为绝对路径

【verify_peer => false是硬性要求】,设为true会导致TLS握手失败,客户端连接立即重置。

示例代码:

$web = new WebServer('ssl://0.0.0.0:443', [

SSL Certificate Monitor
SSL Certificate Monitor

检查一个或多个域名的 SSL/TLS 证书到期时间、颁发者、协议及 SAN 信息,用于应要求检查证书、监控到期或验证 HTTPS 等场景。

下载

  'ssl_context' => [

    'local_cert' => '/var/www/ssl/fullchain.pem',

    'local_pk'  => '/var/www/ssl/privkey.pem',

    'verify_peer' => false

  ]

]);

配置WSS服务(WebSocket over SSL)

方法一:Worker构造时传context + transport='ssl'

创建Worker实例时协议写websocket://0.0.0.0:443,同时传入context数组,其中ssl子数组与HTTPS配置一致

必须手动设置$worker->transport = 'ssl',否则仍是ws协议

方法二:直接用ssl://协议前缀(更简洁)

将协议改为ssl://0.0.0.0:443,再通过$worker->onMessage处理WebSocket帧即可,无需额外设transport

注意:微信小程序等客户端必须用wss://域名访问,且证书域名需匹配,localhost不可用自签名证书直连。

验证与排错

启动后执行php start.php start,无报错不代表成功。用curl验证:curl -I https://your-domain.com,返回200 OK且Header含HTTP/2或HTTP/1.1即通

若浏览器报ERR_CONNECTION_RESET,立刻检查:① local_cert路径是否绝对;② PHP进程用户(如www-data)对证书文件是否有读权限(ls -l看);③ 私钥是否被加密;④ fullchain.pem里私钥是否在最开头、顺序是否为私钥→域名证书→中间证书

用openssl x509 -in fullchain.pem -text -noout | head -20确认证书内容可读;用openssl rsa -in privkey.pem -check -noout验证私钥有效性。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

workerman ssl

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
SSL检测工具介绍
SSL检测工具介绍

SSL检测工具有SSL Labs、SSL Check、SSL Server Test、SSLMate、SSL/TLS Analyzer等。详细介绍:1、SSL Labs是一个由Qualys提供的在线SSL检测工具,可以评估服务器证书的部署情况、加密套件、协议支持等方面的安全性,它提供了一个详细的报告,包括证书的颁发者、有效期、安全性配置等;2、SSL Check等等。

2023.10.20

750

3

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

186

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

202

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

207

13

Python uv使用教程
Python uv使用教程

本专题汇总了 Python uv 使用教程与高效使用指南,从 uv 安装配置、常用命令到虚拟环境、依赖管理与项目打包,系统讲解如何用 uv 替代 pip 与 poetry,全面提升 Python 项目开发效率,助你快速上手这一现代化包管理工具,打造干净高效的 Python 工作流。

2026.10.15

0

15

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

2026.10.14

0

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习