PHP – Swoole – HTTPS/SSL 啟用設定方式

官方文件提到,若要使用 SSL 需要另外啟動,預設是未啟用的。原本我是使用 pecl install swoole 的方式安裝,但發現 pecl 似乎不能修改 swoole 額外配置,所以只好重新下載 swoole 改為手動編譯。手動編譯方式可參考:php – swoole 安裝
git clone https://github.com/swoole/swoole-src.git cd swoole-src phpize ./configure --enable-openssl <-- 在這裡添加想要啟用的配置 make && make install
安裝好以後,記得去 /etc/php/7.2/cli/php.ini 與 /etc/php/7.2/apache2/php.ini 檢查 extension 啟用。檢查 swoole 是否如實啟用 openssl
php --ri swoole
若安裝成功會看到 openssl => enabled
接著 php 連線的部分(參考) ,證書與金鑰文件必須為 PEM 格式,不支持 DER 格式(參考)
$ws = new swoole_websocket_server("0.0.0.0", 8080, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); $key_dir = "/etc/letsencrypt/xxx"; $ws->set( [ 'ssl_cert_file' => $key_dir.'/cert.pem', 'ssl_key_file' => $key_dir.'/privkey.pem', ]);
前端 JacaScript 的部分也要由 ws:// 替換成 wss://
var websocket = new WebSocket('wss://domain.com:8080');
參考
Comments