Swoole整合ThinkPHP3.2系列教程五

时间:2022-01-06 06:48:03

如何开启SSL

对于已经升级成了https协议的网站,我们需要使用websocket连接swoole的话,无法正常连接上swoole服务。因为https认为这是不安全的连接,所以我们必须把swoole开启SSL

1.检查当前的swoole扩展是否开启了openssl:
php --ri swoole
如果看到openssl=>enabled,则表示当前安装的swoole扩展已经开启了SSL。否则请重新编译,携带编译参数--enable-openssl

下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装 (和重新编译安装步骤一样)
cd swoole
phpize
./configure --enable-openssl (如果这一步提示让你设置php-config的路径,在这加上就行了)
make
sudo make install

如果是之前安装过swoole,这里就不用配置php.ini文件里的extension=swoole.so,否则需要自己配置一下。
安装完成以后重新执行上述命令检测是否启用SSL

2.修改swoole.php里文件,定义crt证书路径和key密匙路径。

//笔者测试环境里是把这两个文件都放到了Swoole目录下,根据自定义设置修改
define('SSL_CRT', SWOOLE_PATH.'/server.crt');
define('SSL_KEY', SWOOLE_PATH.'/server.key');

3.修改Server.php里配置项$options数组,增加以下参数:

'ssl_cert_file' => SSL_CRT,
'ssl_key_file' => SSL_KEY,

4.修改Server.php里init()方法里的创建server时增加额外的参数

$this->swoole = new swoole_websocket_server($this->host, $this->port ,  SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);

5.将websocket客户端里的连接地址ws改成wss(注意这里只能走域名,走IP的话无法连接,因为SSL证书是绑定在域名上的)

6.重启swoole服务,打开浏览器测试一下吧。