Ubuntu下OpenSSL性能优化方法
保持Ubuntu系统和OpenSSL库为最新版本,新版本通常包含性能改进、安全修复和优化。使用以下命令更新:
sudo apt update && sudo apt upgrade libssl-dev
修改/etc/ssl/openssl.cnf(或/etc/ssl/openssl.cfg),优化以下参数:
[ssl_session_cache]
type = shared
size = 100000 # 缓存大小(根据内存调整)
timeout = 300 # 缓存超时时间(秒)
[mem]
max_total_cache_size = 104857600 # 100MB(根据需求调整)
若服务器CPU支持AES-NI、QAT(QuickAssist Technology)等硬件加速功能,需确保启用:
grep aes /proc/cpuinfo # 查看是否支持AES-NI
-aes选项:./config --prefix=/usr/local/openssl shared -aes
make -j$(nproc) && sudo make install
openssl speed aes-256-gcm # 对比启用前后的加密速度
ulimit -n 65535 # 临时生效
# 永久生效:编辑/etc/security/limits.conf,添加:
* soft nofile 65535
* hard nofile 65535
sudo sysctl -w net.ipv4.tcp_syncookies=1
sudo sysctl -w net.ipv4.ip_local_port_range="1024 65535"
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.core.netdev_max_backlog=4096
选择性能更高的加密算法,优先使用AES-GCM(比CBC模式更快)和ChaCha20-Poly1305(适合移动设备):
[ssl_cipher_suites]
CipherString = DEFAULT:!aNULL:!MD5:!RC4:!DES:!3DES:!CBC
# 或明确指定高性能套件
CipherString = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384
禁用过时的协议(如SSLv2、SSLv3、TLSv1.0、TLSv1.1),使用TLSv1.3(性能更好,握手更快):
[ssl_protocols]
ssl_protocols = TLSv1.3 TLSv1.2 # 优先TLSv1.3
若从源码编译OpenSSL,使用以下选项提升性能:
./config --prefix=/usr/local/openssl shared zlib -O3 -march=native
make -j$(nproc) && sudo make install
-O3:启用最高级别的编译器优化。-march=native:针对当前CPU架构优化(如AVX2指令集)。shared:生成动态链接库,减少内存占用。使用工具定位性能瓶颈:
openssl speed aes-256-gcm sha256 # 测试具体算法的性能
top/htop # 查看CPU、内存使用
vmstat 1 # 监控系统I/O、内存
sar -n DEV 1 # 监控网络流量
通过会话恢复(Session Resumption)减少重复握手开销,支持Session ID和Session Ticket:
[ssl_session_cache]
session_cache_mode = servers, shared, TLSv1.2
session_cache_size = 102400
session_timeout = 300
在应用程序中实现SSL/TLS连接池,重用已建立的连接,减少握手时间和资源消耗(如Nginx、Apache的连接池配置)。