在 Debian 上用 Nginx 配置 SSL 时,如果要兼容旧浏览器(如 Windows XP 上的 IE6/IE8、老 Android、老 Java 客户端等),主要思路是:启用老旧的协议和加密套件(Cipher Suites),但这会降低安全性,所以一般只建议在内网或必须兼容的场景使用。
下面分步骤说明。
sudo apt update
sudo apt install nginx
/etc/nginx/ssl/example.com.crt/etc/nginx/ssl/example.com.key旧浏览器通常只支持:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
⚠️ 不建议开启 SSLv3(POODLE 漏洞)
如果实在要兼容 IE6,才考虑SSLv3
现代 Nginx 默认禁止了很多旧算法,需要手动加回来:
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-RSA-AES256-GCM-SHA384:
DHE-RSA-AES128-GCM-SHA256:
DHE-RSA-AES256-GCM-SHA384:
AES128-SHA:
AES256-SHA:
DES-CBC3-SHA:
RC4-SHA;
说明:
AES128-SHA / AES256-SHA:IE8 / 老 AndroidDES-CBC3-SHA:很老的系统RC4-SHA:最老浏览器(不安全)ssl_prefer_server_ciphers off;
否则 Nginx 会强制使用现代加密,旧浏览器会握手失败。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
location / {
root /var/www/html;
index index.html;
}
}
如果你必须支持 RC4:
如果只是为了兼容 IE11 / 老 Android:
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256;
✅ 安全性尚可
✅ 兼容性较好
nmap --script ssl-enum-ciphers -p 443 example.com
或在线工具:
| 需求 | 建议 |
|---|---|
| 普通网站 | TLS1.2+ |
| 兼容 IE11 | TLS1.1+ |
| 兼容 XP/IE8 | TLS1.0 + AES-SHA |
| 兼容极老系统 | TLS1.0 + RC4(极不安全) |
如果你能告诉我:
我可以给你最小化安全风险的精准配置。