1. 更新OpenSSL至最新版本
旧版本OpenSSL可能存在已知安全漏洞(如Heartbleed),定期通过系统包管理器更新至最新版本是基础安全措施。例如,在Ubuntu/Debian上使用sudo apt update && sudo apt install openssl,在CentOS/RHEL上使用sudo yum update openssl,确保系统使用最新的安全补丁。
2. 生成与管理密钥对与证书
openssl genrsa -out private.key 4096(RSA)或openssl ecparam -genkey -name secp384r1 -out private.key(ECC)。openssl req命令生成证书签名请求(CSR)和自签名证书(用于测试)或由CA签发的证书(用于生产)。例如,生成自签名证书:openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes。/etc/ssl/private/),设置严格权限(chmod 600 private.key),避免私钥泄露。3. 配置SSL/TLS安全参数
/etc/ssl/openssl.cnf)中设置MinProtocol = TLSv1.2,禁用SSLv2、SSLv3、TLS 1.0/1.1等存在漏洞的协议。CipherString优先使用AEAD(如AES-GCM)和ECDHE密钥交换算法,排除弱算法(如aNULL、MD5、RC4)。例如:CipherString = HIGH:!aNULL:!MD5:!RC4:!3DES。ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s;。Strict-Transport-Security头强制浏览器仅通过HTTPS访问,防止SSL剥离攻击。例如,在Nginx中添加:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;。4. 加密敏感数据与通信
openssl enc -aes-256-cbc -salt -in secrets.txt -out secrets.enc(加密),openssl enc -d -aes-256-cbc -in secrets.enc -out secrets.txt(解密)。ssh -L 8080:localhost:80 user@remote-server(将本地8080端口映射到远程服务器的80端口)。5. 配置Web服务器使用OpenSSL
/etc/nginx/conf.d/ssl.conf),监听443端口并指定证书与密钥路径,启用TLS 1.2/1.3及强密码套件。例如:server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; } 测试配置并重载Nginx:sudo nginx -t && sudo systemctl reload nginx。6. 监控与审计OpenSSL使用
/var/log/openssl.log),记录加密操作与错误信息,便于追踪异常。sslscan、nmap等工具扫描服务器SSL/TLS配置,检查是否存在弱协议、弱密码套件等问题。例如:sslscan --tls-version all yourdomain.com。7. 定期更换证书与密钥
certbot等工具自动续期。