保持系统和OpenSSL更新
定期通过系统包管理器(如apt、yum)更新OpenSSL至最新版本,及时修复已知安全漏洞(如心脏出血漏洞)。对于无法通过包管理器获取的版本,可从OpenSSL官方网站下载源码编译安装,安装后使用openssl version命令验证版本。建议优先选择长期支持(LTS)版本,以获得更长时间的安全保障。
强化SSL/TLS配置
禁用不安全的SSLv2、SSLv3协议及弱加密套件(如MD5、SHA-1),在OpenSSL配置文件(通常为/etc/ssl/openssl.cnf)中设置MinProtocol = TLSv1.2、CipherString = HIGH:!aNULL:!MD5,优先启用TLS 1.2/1.3及ECDHE、AES-GCM等安全算法。对于Nginx、Apache等服务,需同步配置SSL证书路径及协议版本,例如Nginx中添加ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;指令。
严格密钥与证书管理
生成强密钥:RSA密钥长度不低于2048位,ECC密钥不低于256位(如openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes)。使用密码保护私钥,并将私钥存储在仅授权用户可访问的目录(如chmod 600 /path/to/key.pem、chown root:root /path/to/key.pem)。定期更换密钥(建议每年一次)和证书(遵循CA推荐的生命周期),避免密钥泄露风险。
配置安全编译选项
若从源码编译OpenSSL,需禁用不安全功能:使用--prefix=/usr/local/openssl指定安装路径,添加-fPIC(位置无关代码)、shared(生成共享库)选项;通过no-ssl2、no-ssl3、no-md5、no-sha1等选项禁用不安全协议与算法,减少攻击面。
启用安全特性
开启OCSP Stapling(在线证书状态协议),减少客户端验证证书时的延迟及隐私泄露风险(需在服务端配置ssl_stapling on; ssl_stapling_verify on;等指令)。验证证书链完整性,确保客户端连接的是合法服务器,避免中间人攻击。
监控与审计
启用OpenSSL日志记录(在配置文件中设置[log] file = /var/log/openssl.log),记录SSL/TLS握手、错误等信息,定期审查日志以检测异常行为(如频繁的握手失败)。使用sslscan、nmap等工具定期扫描服务器配置,验证SSL/TLS协议及加密套件的安全性(如sslscan --tls-version all yourdomain.com)。
安全编码与操作实践
使用OpenSSL API时,检查所有函数返回值(如SSL_connect、SSL_read),避免因错误未处理导致的安全隐患。避免使用已知弱点的算法(如DES、RC4),优先选择AES、SHA-2等经过验证的算法。限制对OpenSSL命令及配置文件的访问权限(如chmod 700 /usr/bin/openssl、chown root:root /etc/ssl/openssl.cnf),防止未授权操作。