AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 714160
Accepted
Drifter104
Drifter104
Asked: 2015-08-15 00:48:13 +0800 CST2015-08-15 00:48:13 +0800 CST 2015-08-15 00:48:13 +0800 CST

Nginx 客户端 SSL 认证

  • 772

我让 Nginx 纯粹作为各种 Web 服务器的代理运行。我们的一位客户要求我们使用客户端证书,并为 3 台不同的机器提供了 3 个证书,这些机器将连接到在其中一台代理服务器上运行的 Web 服务。

在我找到相关的 nginx 设置并创建站点配置之前从未这样做过(下面的相关部分)

      server {
        listen                  443 ssl; 
        server_name             service.domain.com;
        ssl_certificate         /etc/nginx/ssl/wildcard/server.crt; 
        ssl_certificate_key     /etc/nginx/ssl/wildcard/server.key; 
        ssl_client_certificate  /etc/nginx/ssl/client.certificates/client_package.cer;
        ssl_verify_client on;

我将 3 个客户端证书和一个由开发人员创建的证书(该证书是自签名的)连接到上述单个文件中,该开发人员需要在开发期间访问该站点。

客户现在已尝试访问该站点,但无法访问。作为对配置的测试,我从级联证书文件中删除了开发人员证书,并确认他无法访问该站点。一旦我将他的证书重新添加到连接文件中,他(开发人员)就能够再次正确访问该站点。

我在错误日志上打开了调试级别访问,当客户端尝试连接时出现以下错误。

2015/08/13 11:57:41 [info] 27601#0: *1963 客户端在处理 SPDY 时未发送所需的 SSL 证书,客户端:1x.xx.xx.xx,服务器:service.domain.com,请求:“ GET /test.cfm HTTP/1.1”,主机:“service.domain.com”

正如您从上面的配置中看到的那样,我没有启用 SPDY(但我在其他站点上启用了),并且客户端确保我他们正在发送客户端证书。因为这是我第一次这样做,所以我想确保在我回去说我的日志说你没有发送客户端证书之前,我已经把一切都搞定了。

关于发送给我的证书:所有 3 个证书均由同一个公共证书颁发机构签名。但是,我没有连接文件中的整个链。我在网上找到的指南也提到了具有根​​ ca,但他们都在谈论自签名,而这些都不是。所以我不确定这是否适用。

为了澄清,我也没有尝试将客户端证书传递给代理服务器。

nginx 版本:nginx/1.8.0
openssl 版本:OpenSSL 1.0.1k 2015 年 1 月 8 日

如果需要更多信息,请告诉我

nginx
  • 3 3 个回答
  • 17460 Views

3 个回答

  • Voted
  1. Best Answer
    dtoubelis
    2015-08-19T20:19:07+08:002015-08-19T20:19:07+08:00

    您的配置实际上是正确的。但是,请确保您没有将实际的客户端证书放入client_package.cer文件中。这个文件应该只包含受信任的 CA 证书,实际上它应该包含完整的链。如果您的客户没有提供所有根证书和中间证书,您应该向他们索取所有的根证书和中间证书。

    与默认服务器设置相关的问题也很少。请阅读并确保它不会影响您。

    • 2
  2. mvorisek
    2015-08-17T12:08:25+08:002015-08-17T12:08:25+08:00

    使用ssl_trusted_certificate指令而不是ssl_client_certificate. 请参阅文档http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate。

    但无论如何,我建议使用一个根 CA签署所有客户端证书,并验证客户端证书是否使用该 CA 签署。

    如果它解决了您的问题,请接受它作为答案。

    • 1
  3. x86fantini
    2015-08-17T13:10:55+08:002015-08-17T13:10:55+08:00

    SSL证书是通配符还是单域?也许开发人员试图访问网站 url,例如 test.myapp.com,但证书仅针对 myapp.com 或 www.myapp.com 颁发

    • -1

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve