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 / 问题 / 1140921
Accepted
Grant Curell
Grant Curell
Asked: 2023-08-07 09:22:24 +0800 CST2023-08-07 09:22:24 +0800 CST 2023-08-07 09:22:24 +0800 CST

即使客户端证书不是由与服务器证书相同的 CA 签名,是否也可以让浏览器提供客户端证书?

  • 772

我处于一个奇怪的场景中,我有一个带有 NodeJS 后端和 ReactJS 前端的服务器,它会保存记录,客户希望使用用户证书来识别访问此内部站点的人员。问题是他们有一个非常大的网络,带有复杂的 PKI,而且我分配给该站点的公共证书不一定与所有可以访问它的客户端相匹配。

我在前面设置了 nginx,ssl_verify_client optional_no_ca;但我注意到,如果用户拥有由与​​ nginx 提供的公钥相同的 CA 正确签名的证书,浏览器只会为用户提供选择客户端证书的选项。

我的理解是,在证书请求期间,服务器可以指定哪些 CA 是可接受的。看起来nginx 可能正在这样做,但我不确定情况是否如此。我的计划是明天开始用wireshark进行剖析。有没有一种已知的方法可以让我的网站要求浏览器始终提示用户输入客户端证书?我是否一路上误解了什么?

nginx
  • 1 1 个回答
  • 612 Views

1 个回答

  • Voted
  1. Best Answer
    anx
    2023-08-07T10:21:33+08:002023-08-07T10:21:33+08:00

    简单:将您希望 nginx 请求的权限证书放入您的 nginx 配置中。Nginx 将根据您的ssl_verify_client设置发送并验证这些内容。就是这样‡。

    ssl_client_certificate = /path/to/concatenated-x509.pem
    # contents of /path/to/concatenated-x509.pem may contains, possibly many:
    # -----BEGIN CERTIFICATE---- much foo bar -----END CERTIFICATE-----
    

    通过证书进行身份验证的两个方向是不相关的。您的服务器确实提供了证书,并且没有规则说不能有任何重叠,但除此之外,您可以要求您想要的任何权限。Nginx 甚至不发送您配置为使用ssl_client_certificate. 它发送可接受的签名算法的列表,以及这些证书的可分辨名称集的列表:类似于/C=DK/O=ACME Inc./CN=ACME CA3.

    如果您必须支持较旧的(TLSv1.3 之前的)客户端以及混合签名算法(EC 和 RSA 之间的混合),并且您的专有名称列表变得过大,则可能会遇到互操作性问题。尝试可行的方法,特别是使用您需要支持的软件,并确保错误消息要么是不言自明的,要么是为客户或业务合作伙伴可能遇到的任何错误消息正确记录的。


    ‡) 这就是让完全支持 TLSv1.3 的客户端提供签名证书的过程。那么你还没有完成。请不要相信任何非由您管理的 CA 签署的所有内容都是证书所暗示的授权用户,并确保在实际处理那些可选提供的 nginx 代理后面的应用程序中进行非常严格的验证,可能是毫无价值/不相关的证书。

    • 5

相关问题

  • 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