以下是使用OpenSSL配置Ubuntu服务器安全的步骤:
-
更新系统与安装OpenSSL
sudo apt update && sudo apt install openssl libssl-dev -
生成或获取证书
- 自签名证书(测试用):
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 - 生产环境建议使用Let’s Encrypt免费证书(需安装Certbot):
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com
- 自签名证书(测试用):
-
配置Web服务器(以Nginx为例)
编辑配置文件(如/etc/nginx/sites-available/default),添加SSL参数:server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 其他配置... }测试并重启Nginx:
sudo nginx -t && sudo systemctl reload nginx -
强化安全策略
- 禁用不安全协议/密码套件:在
/etc/ssl/openssl.cnf中设置:[system_default_sect] MinProtocol = TLSv1.2 CipherString = HIGH:!aNULL:!MD5 - 启用HSTS:在Nginx配置中添加:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - 限制访问权限:
sudo chmod 600 /etc/ssl/*.pem sudo chown root:root /etc/ssl/*.pem
- 禁用不安全协议/密码套件:在
-
防火墙与自动续期
- 允许HTTPS流量(UFW):
sudo ufw allow 'Nginx Full' sudo ufw enable - 配置Certbot自动续期(若使用Let’s Encrypt):
sudo crontab -e # 添加以下行(每90天检查一次): 0 0,12 * * * certbot renew --quiet && systemctl reload nginx
- 允许HTTPS流量(UFW):
-
监控与审计
- 定期检查证书有效期:
sudo certbot certificates - 使用工具(如
sslscan)测试SSL配置安全性:sudo apt install sslscan sslscan yourdomain.com
- 定期检查证书有效期:
注意:生产环境需使用受信任的CA证书,定期备份配置文件与密钥,避免泄露私钥。