【问题标题】:Nginx not serving intermediate certificateNginx 不提供中间证书
【发布时间】:2014-08-03 21:34:18
【问题描述】:

我正在尝试在 Nginx 上安装 ssl 证书(实际上是 laravel forge)。我已将证书与中间体连接起来,并且在 Nginx 错误日志中没有收到任何错误。但是,它在移动 chrome 中不受信任 - 只有桌面。

查看 Qualys ssl 测试,它说链是不完整的。不过我不明白。

这是我的 Nginx 配置

server {
listen 80;
server_name **********.com;
return 301 https://**********.com$request_uri;
}

server {
listen 443 ssl;
server_name **********.com;
root /home/forge/**********.com/public;

# FORGE SSL (DO NOT REMOVE!)
ssl on;
ssl_certificate /etc/nginx/ssl/**********.com/1086/server.pem;
ssl_certificate_key /etc/nginx/ssl/**********.com/1086/server.key;

index index.html index.htm index.php;

charset utf-8;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt  { access_log off; log_not_found off; }

access_log off;
error_log  /var/log/nginx/**********.com-error.log error;

error_page 404 /index.php;

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

location ~ /\.ht {
    deny all;
}
}

有人可以帮忙吗?这几天我一直在拔头发。

【问题讨论】:

    标签: ssl nginx chain


    【解决方案1】:

    查看 Qualys ssl 测试,它说链是不完整的。我不明白怎么...

    您似乎发送了错误的中间件:

    $ openssl s_client -connect cauterypens.com:443
    CONNECTED(00000003)
    depth=0 C = GB, OU = Domain Control Validated, CN = cauterypens.com
    verify error:num=20:unable to get local issuer certificate
    verify return:1
    depth=0 C = GB, OU = Domain Control Validated, CN = cauterypens.com
    verify error:num=27:certificate not trusted
    verify return:1
    depth=0 C = GB, OU = Domain Control Validated, CN = cauterypens.com
    verify error:num=21:unable to verify the first certificate
    verify return:1
    ---
    Certificate chain
     0 s:/C=GB/OU=Domain Control Validated/CN=cauterypens.com
       i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
     1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
       i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
     ...
    

    证书 0 的主题是 CN=cauterypens.com。证书0的颁发者是CN=AlphaSSL CA - SHA256 - G2

    中间证书应该是链中的下一个。但是,您发送的不是CN=AlphaSSL CA - SHA256 - G2,而是CN=AlphaSSL CA - G2。请注意名称中缺少SHA256

    要解决此问题,您应该从 Download GlobalSign Root and Intermediate Certificate 获取 AlphaSSL CA - SHA256 - G2。它有指纹指纹ae:bf:32:c3:c8:32:c7:d7:bc:55:99:b1:aa:05:fb:6c:f4:d9:29:4c


    相关:CA 是 CN=GlobalSign Root CA。那是GlobalSign Root R1 下载。下载它并保存到一个文件中(它的名字是Root-R1.crt)。它已经在 PEM 编码中。然后,您应该能够通过以下方式验证链:

    $ openssl s_client -connect cauterypens.com:443 -CAfile Root-R1.crt
    ...
    Verify OK (0)
    

    如果它没有验证,那么你有其他麻烦。在继续之前解决问题。

    【讨论】:

    • 你完全正确。阅读您的答案后大约 3 分钟,它已修复。谢谢!
    • 此在线工具为您下载所有中间证书:certificatechain.io
    猜你喜欢
    • 2011-12-28
    • 2016-07-01
    • 1970-01-01
    • 2014-11-03
    • 2019-09-03
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多