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

發表迴響