服务端可以用自签名的ssl证书,示例如下:
<?php $server = new Swoole\Server('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); $server->set(array( 'ssl_cert_file' => __DIR__ . '/config/ssl.crt', 'ssl_key_file' => __DIR__ . '/config/ssl.key', 'ssl_verify_peer' => true, 'ssl_allow_self_signed' => true, 'ssl_client_cert_file' => __DIR__ . '/config/ca.crt', ));客户端代码:
<?php $client = new Swoole\Client(SWOOLE_SOCK_TCP | SWOOLE_SSL); $client->set(array( 'ssl_cert_file' => __DIR__.'/ca/client-cert.pem', 'ssl_key_file' => __DIR__.'/ca/client-key.pem', 'ssl_allow_self_signed' => true, 'ssl_verify_peer' => true, 'ssl_cafile' => __DIR__.'/ca/ca-cert.pem', )); if (!$client->connect('127.0.0.1', 9501, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } echo "connect ok\n"; $client->send("hello world-" . str_repeat('A', $i) . "\n"); echo $client->recv();
网友回复