【问题标题】:Google Chrome use certificate for a website网站的谷歌浏览器使用证书
【发布时间】:2017-06-27 17:44:13
【问题描述】:

我正在创建一个网站(使用 OpenResty,但我不认为这是相关的),它只接受带有客户端证书验证的 HTTPS 连接。我按照http://www.integralist.co.uk/posts/clientcertauth.html 生成我自己的证书颁发机构、证书签名请求和 CRT。然后我测试了当我使用 python 访问 URL 时,我的网络服务器正确地接受了这个 CRT

certName = "mycert"
cert = (certName + ".crt", certName + ".key")
response = requests.get(url, params=urlencode(payload), cert=cert, verify=False, stream=True)

现在,我正在尝试从 Google Chrome 访问相同的 URL。我使用设置 --> HTTPS/SSL --> 管理证书 --> 导入来导入我的 CRT 文件。但是,每当我访问 URL 时,总是会收到 400 Bad Request - 没有发送所需的 SSL 证书。通过查看 nginx 错误日志,我确认“客户端发送了不需要的 SSL 证书”

如何让 Chrome 使用特定 URL 的证书?

【问题讨论】:

  • 对于客户端身份验证,您需要证书和私钥(在一个 certstore 条目中)。那个网页伤害了我的眼睛,但看起来你使用的是 openssl;如果是这样,您可以使用 openssl 将私钥和证书链组合成 pkcs12(又名 PFX)并将其导入 Chrome 使用的 Windows 商店,请参阅 stackoverflow.com/questions/808669/…stackoverflow.com/questions/553149/…
  • 请注意,这不会告诉 Chrome 将其用于“特定 URL”;它将用于使用此证书中的 CA 名称请求证书的任何服务器。由于您显然设置了自己的 CA,因此大概只有您控制的服务器会使用该 CA 名称请求证书。

标签: windows ssl nginx https ssl-certificate


【解决方案1】:

这里有几件事需要解决。

  1. 您是否在相应的 CA 商店中安装了 CA 证书?
  2. 您需要在当前用户存储中导入客户端证书和私钥。文件扩展名为 .pfx。您当前收到 400 错误,因为浏览器认为它没有任何客户端证书可以使用。
  3. 您不能指定 chrome 为特定 URL 使用特定证书。

请参阅这篇博文,了解 TLS 相互身份验证的工作原理:https://blogs.msdn.microsoft.com/kaushal/2015/05/27/client-certificate-authentication-part-1/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2023-04-09
    • 1970-01-01
    • 2011-07-11
    • 2013-05-14
    相关资源
    最近更新 更多