一、生成本地證書
創(chuàng)建服務(wù)器私鑰,命令會讓你輸入一個口令:
$ openssl genrsa -des3 -out server.key 1024
創(chuàng)建簽名請求的證書(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
最后標(biāo)記證書使用上述私鑰和CSR:
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
創(chuàng)建wss服務(wù)
準(zhǔn)備工作:
1、Workerman版本不小于3.3.7
2、PHP安裝了openssl擴展
3、已經(jīng)申請了證書(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下
start_gateway.php中設(shè)置以下代碼。
$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協(xié)議
$gateway = new Gateway("websocket://0.0.0.0:7272", $context);
// 開啟SSL,websocket+SSL 即wss
$gateway->transport = 'ssl';
通過以上配置不成功,但是服務(wù)可以正常啟動。
如果是自己生成的證書,需要添加一行 '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選項,可以根據(jù)自己的需要添加修改