作者:柯云,來自原文地址
微信小程序的websocket必須是wss協議,
于是搗鼓給swoole的websocket server加入SSL支持。
第一步,準備好自己的域名,備案等,就不啰嗦了。
第二步,到阿里云申請免費的證書服務。

按照提示一步步進行,最后下載得到一個pem文件和一個key文件。
將文件上傳到服務器上。
第三步,將證書對應的域名,解析到swoole服務器的IP上。
第四步,重新編譯安裝swoole,加入ssl支持
-
cd swoole-src
-
phpize
-
./configure --enable-openssl
-
make && make install
當然,要先確保你的系統安裝了openssl,php也安裝了openssl擴展
第五步,編碼,創建支持ssl的websocket服務
-
$ws = new swoole_websocket_server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
-
$key_dir = "/usr/local/ca";
-
-
$ws->set(array(
-
'worker_num' => 4,
-
'ssl_cert_file' => $key_dir.'/xxxxxxxxxxxx.pem',
-
'ssl_key_file' => $key_dir.'/xxxxxxxxxxxx.key',
-
));
以上,基本實現了一個wss協議的websocket服務
ps:如基于web來連接wss,web也需要是https
nginx配置HTTPS支持
修改Nginx配置文件,讓其包含新標記的證書和私鑰:
-
server {
-
server_name YOUR_DOMAINNAME_HERE;
-
listen 443;
-
ssl on;
-
ssl_certificate /usr/local/nginx/conf/xxxxxxxxxxxx.pem;
-
ssl_certificate_key /usr/local/nginx/conf/xxxxxxxxxxxx.key;
-
}
重啟nginx。
crt文件可以直接用我們的pem文件替換
|