【问题标题】:Why do i get “ERR_EMPTY_RESPONSE” after client certificate authentication?为什么我在客户端证书认证后得到“ERR_EMPTY_RESPONSE”?
【发布时间】:2020-06-03 08:54:53
【问题描述】:

我创建了一个 API(在 python 中),我希望与我的同事分享它。我创建了一个运行 API 的 docker 容器,并使用 nginx 来保护传入请求。 对于 SSL/TLS,我现在使用自签名证书。对于身份验证,我在 nginx 中指定需要客户端证书。然后我在 GCP 计算引擎实例上启动了 docker 容器。我确定实例的防火墙规则没问题,因为如果我禁用客户端身份验证设置,一切正常。我的同事可以毫无问题地访问 API。

当我打开客户端身份验证时,问题就开始了。我和两个同事安装了我们的客户证书。选择客户端证书后,我可以像同事 1 一样毫无问题地访问该网站。同事 2 收到要求提供证书的响应,他选择了他的证书,然后每次都得到 ERR_EMPTY_RESPONSE(在 google chrome、edge、postman 上......)。如果他不选择证书,他将获得标准

400 错误请求

未发送所需的 SSL 证书

nginx/1.14.2

这是预期的。

但是是什么导致了 ERR_EMPTY_RESPONSE?身份验证本身似乎有效。

相关nginx代码:

    server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name 0.0.0.0;
    keepalive_timeout   70;

    ssl_certificate     /etc/ssl/certs/api-server-cert.pem;
    ssl_certificate_key /etc/ssl/certs/api-server.pem;
    ssl_client_certificate /etc/ssl/certs/CA-cert.pem;
    ssl_verify_client on;

    location / {
        proxy_pass http://0.0.0.0:5000/;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_buffer_size   128k;
        proxy_buffers   4 256k;
        proxy_busy_buffers_size   256k;

    }

    client_max_body_size 5M;

}

【问题讨论】:

  • 请查看您服务器的错误日志。此外,http://0.0.0.0:5000/ 不是正确的目标地址(这可能是问题的原因) - 要访问本地应用程序,请使用 http://127.0.0.1:5000/

标签: ssl nginx ssl-certificate


【解决方案1】:

不确定我应该删除这个问题还是自己回答。 显然这不是服务器端的问题。一些防病毒软件会在没有警告的情况下阻止具有不受信任证书的网站。所以将url/ip地址加入杀毒白名单即可解决问题。

【讨论】:

    猜你喜欢
    • 2015-09-06
    • 2010-11-30
    • 2012-09-04
    • 2013-08-04
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多