SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
ssl://将根据远程服务器的兼容性和参数设置尝试与之建立 SSL V2 或 SSL V3 链接。
sslv2://和 sslv3://将明确的选择 SSL V2 或 SSL V3 协议进行连接。
一旦涉及SSL/TLS就涉及证书的概念,在SSL/TLS握手阶段,服务器会将自己的证书发送给客户端,客户端可以对证书进行验证,再进入加密通信过程。SSL/TLS握手阶段,是一个非加密通信过程, 后续才会是加密通信过程。
要配置SSL/TLS第一步是生成证书,证书可以通过第三方权威机构购买,或者自行签发。
注:对我们自行签发的证书,浏览器不信任, 地址栏的加密标志会显示警告信息,可以为客户端手工安装自签名的证书,使它被客户端浏览器信任。
命令行下运行php脚本,用来生成证书:
php vendor/beyoio/beyod/scripts/ssl.php
将在当前目录生成server.pem, 这就是证书文件, 请复制到config目录下。
不建议在windows中执行,否则可能遇到未知的错误。
config/main.php
'components' => [
'server'=> [
'class' => 'app\MyServer',
'listeners' => [
'server1' => [
'class' => 'beyod\Listener',
'listen' => 'ssl://0.0.0.0:9723',
'handler' => [
'class' => 'beyod\protocol\http/Handler',
'document_root' => __DIR__.'/../app/webroot',
],
'parser' => 'beyod\protocol\http\Parser',
'ssl' => [
'local_cert' => __DIR__.'/server.pem', //证书文件路径
'passphrase' => 'beyodpass',//证书密码
'allow_self_signed'=>true, //允许自签名证书
'verify_peer' =>false //不验证客户端的证书
]
]
]
]
]
即wss协议,加密的websocket协议。利用相同的方法,我们就可以实现wss协议支持。