centos

nginx在centos上ssl调试技巧

小樊
44
2025-12-05 15:38:14
栏目: 云计算

Nginx 在 CentOS 上的 SSL 调试技巧

一 快速自检与定位路径

二 常见报错对照与修复要点

症状 典型日志关键词 快速修复
启动报错 unknown directive “ssl” nginx: [emerg] unknown directive “ssl” 编译时未包含模块,需带 –with-http_ssl_module 重装或重编译 Nginx
启动报错 No “ssl_certificate” defined no “ssl_certificate” is defined in server listening on HTTPS listen 443 ssl 的 server 块中补全 ssl_certificatessl_certificate_key
启动或握手失败 权限被拒绝 BIO_new_file() failed … Permission denied 证书/目录权限不足或 SELinux 限制;证书 644、目录 755,必要时 restorecon 或调整策略
证书链不完整 SSL_CTX_use_certificate … certificate verify failed / chain too many 使用 fullchain.pem(含中间证书);或手动合并:cat domain.crt intermediate.crt > fullchain.pem
握手失败 密钥不匹配 SSL_CTX_use_PrivateKey_file … verify failed 校验证书与私钥是否配对(模数一致)
握手失败 曲线不支持 EC_GROUP_new_by_curve_name: unknown group 客户端/上游或系统 OpenSSL 过旧,升级 OpenSSL 与 Nginx
握手失败 bad key share tls_parse_ctos_key_share: bad key share 客户端过旧或中间设备干扰;升级客户端、临时放宽套件或禁用 HTTP/2 验证
代理上游 SSL 握手失败 SSL_do_handshake() failed … while SSL handshaking to upstream 上游证书链/协议/曲线不兼容;对齐 TLS 版本与曲线,必要时升级上游 OpenSSL

三 深入排查命令清单

四 配置与运维要点

五 最小化调试配置模板

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/yourdomain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;

    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
                       ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}
location / {
    proxy_pass https://backend.example.com;
    proxy_ssl_verify on;                 # 生产建议开启
    proxy_ssl_trusted_certificate /etc/nginx/ssl/ca-bundle.crt;  # 上游 CA 或中间证书
    proxy_ssl_verify_depth 2;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

0
看了该问题的人还看了