温馨提示×

nginx在ubuntu上ssl支持哪些协议

小樊
37
2025-12-28 17:14:07
栏目: 云计算

支持的 ssl 协议与版本

  • 取决于 nginx 编译时是否启用 --with-http_ssl_module 以及系统 openssl 版本。在 ubuntu 20.04/22.04/24.04 的官方仓库中,nginx 通常随包提供并启用 ssl 模块,默认即可提供 tlsv1.2、tlsv1.3;旧的不安全协议 sslv2/sslv3、tlsv1.0/tlsv1.1 建议禁用。若从源码编译,需确认已包含 –with-http_ssl_module

推荐配置示例

  • 仅启用现代安全协议,并配合现代套件与 http/2(需 nginx ≥ 1.9.5 且 openssl ≥ 1.0.2):
    server {
        listen 443 ssl http2;
        server_name yourdomain.com www.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_prefer_server_ciphers on;
    
        # tls 1.3 套件
        ssl_ciphersuites TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256;
        # tls 1.2 套件
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
                   ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
                   ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
    
        ssl_ecdh_curve secp384r1;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;  # 生成: openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
    
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        ssl_session_tickets off;
    
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8 8.8.4.4 valid=300s;
        resolver_timeout 5s;
    
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
    }
    
    说明:禁用 sslv2/3、tlsv1.0/1.1;优先 ecc + ecdhe 实现前向保密;启用 http/2 提升并发性能;开启 ocsp stapling 降低握手延迟。

如何确认与验证

  • 检查模块与编译参数:执行 nginx -v 查看版本,执行 nginx -V 2>&1 | grep – ‘–with-http_ssl_module’ 确认已启用 ssl 模块。
  • 在线与命令行验证:使用 ssllabs ssltest 评估配置(目标 a+);命令行可用 openssl s_client -connect yourdomain.com:443 -tls1_2-tls1_3 测试协商版本,或用 curl -v --tlsv1.2/–tlsv1.3 https://yourdomain.com 验证。

兼容旧客户端的折中方案

  • 如需兼容极旧客户端(不推荐),可在 ssl_protocols 中临时加入 tlsv1.1(或更低),但务必权衡安全风险;多数生产环境建议仅保留 tlsv1.2/1.3

0