1. 保持OpenSSL版本更新
定期更新OpenSSL至最新稳定版本,及时修补已知安全漏洞(如“心脏出血”漏洞)。通过包管理器(如apt、yum)更新:
# Debian/Ubuntu
sudo apt update && sudo apt upgrade openssl libssl-dev
# RHEL/CentOS
sudo yum update openssl openssl-devel
确保系统优先从官方存储库安装,避免使用未经验证的第三方源。
2. 配置安全的SSL/TLS协议与密码套件
禁用不安全的SSLv2、SSLv3和TLS 1.0/1.1,仅启用TLS 1.2及以上版本;选择强密码套件(如ECDHE-RSA-AES256-GCM-SHA384),避免弱算法(如MD5、SHA-1)。
/etc/ssl/openssl.cnf):[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
测试配置有效性:openssl s_client -connect yourdomain.com:443 -tls1_2。3. 正确管理密钥与证书
# 生成RSA私钥(2048位)
openssl genrsa -out private.key 2048
# 生成ECC私钥(256位)
openssl ecparam -genkey -name prime256v1 -out ecc.key
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.csr
openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
.crt)和私钥(.key)放置在安全目录(如/etc/ssl/certs/、/etc/ssl/private/),限制访问权限:sudo chmod 600 /etc/ssl/private/private.key
sudo chown root:root /etc/ssl/private/private.key
定期更换证书(如每年),避免私钥泄露。4. 强化Web服务器SSL/TLS配置
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
mod_status(除非必要),减少攻击面。5. 加密敏感通信通道
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
scp ~/.ssh/id_rsa.pub user@your_server_ip:~/.ssh/authorized_keys
修改SSH配置(/etc/ssh/sshd_config):PasswordAuthentication no,重启SSH服务:sudo systemctl restart sshd。openssl s_server(服务器)和openssl s_client(客户端)测试加密通信,或通过OpenSSL API开发自定义加密应用。6. 监控与审计加密系统
error_log /var/log/nginx/error.log debug;
access_log /var/log/nginx/access.log main;
grep、awk等工具分析日志,查找异常(如大量握手失败、无效证书)。7. 验证证书链与配置
openssl x509命令查看证书详情,确保证书由受信任的CA签发且未过期:openssl x509 -in certificate.crt -text -noout
/usr/local/share/ca-certificates/),运行update-ca-certificates,验证客户端能否正常访问HTTPS服务。