GatewayWorker 如何在本地搭建wss 。

mingzhi

一、生成本地证书

创建服务器私钥,命令会让你输入一个口令:

$ openssl genrsa -des3 -out server.key 1024
创建签名请求的证书(CSR):

$ openssl req -new -key server.key -out server.csr
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key

最后标记证书使用上述私钥和CSR:

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

创建wss服务
准备工作:

1、Workerman版本不小于3.3.7

2、PHP安装了openssl扩展

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

start_gateway.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
    )
);
// websocket协议
$gateway = new Gateway("websocket://0.0.0.0:7272", $context);
// 开启SSL,websocket+SSL 即wss
$gateway->transport = 'ssl';

通过以上配置不成功,但是服务可以正常启动。

阅读 4085
1个回答

walkor

如果是自己生成的证书,需要添加一行 'allow_self_signed' => true,

'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,
)

http://php.net/manual/zh/context.ssl.php
这里有所有的ssl选项,可以根据自己的需要添加修改

  • mingzhi 2017-07-11

    好的,多谢

  • mingzhi 2017-07-11

    我现在已经申请了线上 ca 证书,我怎么加到使用wss ,我只有一个域名,我试过多次都不成功

  • mingzhi 2017-07-11

    @2373:我知道了,竟然不能使用443端口,服务器并没有占用