当前位置: 首页 > news >正文

Workerman开启ssl方法如下

参考地址

Workerman开启ssl方法如下-遇见你与你分享

准备工作:

1、Workerman版本不小于3.3.7

2、PHP安装了openssl扩展

3、已经申请了证书(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下

4、配置文件

 location /wss {

    proxy_set_header  Host $host;

    proxy_set_header  X-Real-IP  $remote_addr;

    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header  X-Forwarded-Proto   $scheme;

    proxy_pass        http://127.0.0.1:9001/wss;

    

    # 关键配置 start

    proxy_http_version 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection "upgrade";

    # 关键配置 end

}     

代码:

<?phpuse Workerman\Worker;use Workerman\Connection\TcpConnection;require_once __DIR__ . '/vendor/autoload.php';// 证书最好是申请的证书$context = array('ssl' => array('local_cert'        => '/etc/nginx/conf.d/ssl/server.pem', // 也可以是crt文件'local_pk'          => '/etc/nginx/conf.d/ssl/server.key','verify_peer'       => false,'allow_self_signed' => true, //如果是自签名证书需要开启此选项));// 这里设置的是websocket协议,也可以http协议或者其它协议$worker = new Worker('websocket://0.0.0.0:443', $context);// 设置transport开启ssl$worker->transport = 'ssl';$worker->onMessage = function(TcpConnection $con, $msg) {$con->send('ok');};Worker::runAll();

Workerman开启服务器名称指示 SNI(Server Name Indication)

可实现在同一IP、端口情况下,绑定多个证书。

合并证书.pem和.key文件:

将每个证书的.pem和对应的.key文件内容合并,将.key文件内容添加到.pem文件结尾。(若.pem文件内已包含私钥,则可忽略。)

请注意是单个证书,不是把所有证书复制到一个文件

例如host1.com.pem合并后的pem文件内容大概如下:

-----BEGIN CERTIFICATE-----MIIGXTCBA...-----END CERTIFICATE----------BEGIN CERTIFICATE-----MIIFBzCCA...-----END CERTIFICATE----------BEGIN RSA PRIVATE KEY-----MIIEowIBAA....-----END RSA PRIVATE KEY-----

代码:

<?phpuse Workerman\Worker;use Workerman\Connection\TcpConnection;require_once __DIR__ . '/vendor/autoload.php';$context = array('ssl' => array('SNI_enabled' => true, // 开启SNI'SNI_server_certs' => [ // 设置多个证书'host1.com' => '/path/host1.com.pem', // 证书1 服务器根目录'host2.com' => '/path/host2.com.pem', // 证书2  服务器根目录],'local_cert' => '/path/default.com.pem', // 默认证书'local_pk'   => '/path/default.com.key',));$worker = new Worker('websocket://0.0.0.0:443', $context);$worker->transport = 'ssl';$worker->onMessage = function(TcpConnection $con, $msg) {$con->send('ok');};Worker::runAll();

image.png

代表启动成功

http://www.lryc.cn/news/340944.html

相关文章:

  • 如何防止服务器被攻击
  • 18 统计网站每日的访问次数
  • Java PDF文件流传输过程中速度很慢,如何解决?
  • MCU最小系统晶振模块设计
  • ELK及ELFK排错
  • 『Django』创建app(应用程序)
  • Docker安装(一)
  • 由于bug发现的现象
  • ES源码四:网络通信层流程
  • 贝锐蒲公英自研异地组网新技术:远程视频监控,流畅度、清晰度大幅提升
  • C# aspose word实现模板方式打印及打印速度慢解决方法
  • java纯文字游戏
  • mac IDEA激活 亲测有效
  • 视频怎么去水印,轻松去视频水印的方法
  • vue3+element+AntDesign(自动导入)+pina+vite+js+pnpm搭建项目框架
  • Android Studio XML 预览View 底部移动到右边
  • 计算机网络——实现smtp和pop3邮件客户端
  • 【Spring】面试题汇总
  • thinkphp6入门(23)-- 如何导入excel
  • 【数据结构3-栈和队列】
  • STL--list双向链表
  • ElasticSearch入门篇
  • MAXHUB会议解决方案持续进化,以“高效”为核心推动行业发展
  • CentOS 7安装Redis
  • Kubernetes (K8s) 部署前后端分离项目
  • MLT媒体程序框架01:概述
  • 9【原型模式】复制一个已存在的对象来创建新的对象
  • 谷粒商城实战(013 业务-认证服务-短信验证)
  • Unity中支持泰语--没有版权限制
  • C语言传统垃圾收集器的缺陷以及我的思路