OpenSSL是一个强大的开源加密工具包,结合Nginx可以显著提升Web服务器的通信安全性。以下是使用OpenSSL优化Nginx安全性的详细指南:
openssl req -newkey rsa:4096 -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
openssl ecparam -genkey -name secp384r1 -out ecdsa.key
openssl req -new -x509 -key ecdsa.key -out ecdsa.crt -days 365
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
# 启用TLS 1.2和1.3(禁用不安全的旧版本)
ssl_protocols TLSv1.2 TLSv1.3;
# 优先使用服务器端密码套件
ssl_prefer_server_ciphers on;
# 配置强密码套件
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
# 启用OCSP装订
ssl_stapling on;
ssl_stapling_verify on;
# 设置HSTS头(强制HTTPS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
}
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256;
openssl dhparam -out dhparam.pem 4096
然后在Nginx配置中添加:
ssl_dhparam /path/to/dhparam.pem;
ssl_session_tickets on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_early_data on;
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3
访问 https://www.ssllabs.com/ssltest/ 分析服务器安全性
通过以上配置,您可以显著提升Nginx服务器的通信安全性,保护用户数据免受中间人攻击和其他安全威胁。