2025年09月08日/ 浏览 5
在网络通信中,数据明文传输存在被窃听、篡改的风险。特别是涉及用户隐私、支付等敏感信息时,SSL/TLS加密成为必备方案。Swoole作为高性能网络通信框架,原生支持SSL/TLS协议栈,可通过简单配置实现:
bash
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365
Swoole需要PEM格式证书,其他格式需转换:bash
openssl pkcs12 -in cert.pfx -nodes -out server.pem
php
$server = new Swoole\Http\Server(“0.0.0.0”, 443, SWOOLEPROCESS, SWOOLESOCKTCP | SWOOLESSL);
$sslconfig = [
‘sslcertfile’ => ‘/path/to/server.crt’,
‘sslkeyfile’ => ‘/path/to/server.key’,
// 高级配置
‘sslprotocols’ => SWOOLESSLTLSv12 | SWOOLESSLTLSv13,
‘sslciphers’ => ‘ECDHE-ECDSA-AES256-GCM-SHA384’,
‘sslverify_peer’ => false // 是否验证客户端证书
];
$server->set($ssl_config);
php
$server = new Swoole\Server("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$server->set([
'ssl_cert_file' => __DIR__.'/ssl.crt',
'ssl_key_file' => __DIR__.'/ssl.key'
]);
php
$client = new Swoole\Coroutine\Http\Client('example.com', 443, true);
$client->set(['ssl_verify_peer' => true]);
$client->get('/');
浏览器端需使用wss://
协议:
javascript
const ws = new WebSocket("wss://yourdomain.com:443");
会话复用:启用SSL会话票证减少握手开销
php
'ssl_session_ticket' => true
协议选择:优先使用TLS1.3(性能提升40%+)
证书优化:
硬件加速:
php
'ssl_ecdh_curve' => 'prime256v1'
证书链不完整:
bash
cat ca_bundle.crt >> server.crt
协议版本不匹配:
php
'ssl_protocols' => SWOOLE_SSL_TLSv1_2
错误日志分析:
php
$server->on('workerError', function($serv, $workerId, $exitCode, $signal) {
error_log("SSL error: ".openssl_error_string());
});
通过合理配置SSL/TLS,Swoole服务可以获得银行级的安全通信保障。建议生产环境定期轮换证书,并配合WAF等安全设施形成纵深防御体系。