【问题标题】:Chrome, Linux, headless, using client certificatesChrome,Linux,无头,使用客户端证书
【发布时间】:2022-09-23 01:21:10
【问题描述】:

我在无头模式下通过测试用户的 PKI 证书时遇到问题。我正在使用 Java Selenium WebDriver 4.3.0。当我在正常模式下运行我的测试套件时,我的个人资料和证书被完美地拾取。配置文件用户由 ChromeOptions 类通过识别 --user-data-dir= 来选择。我的每个测试用户都有不同的配置文件。然后通过策略设置(即 AutoSelectCertificateForUrls)选择证书。这也很有效。当我导航到不同的 URL 位置时,当我在正常模式下运行时,我的测试证书会正确显示和接受。

当我将模式更改为 Headless=true(即 ChromeOptions.addArguents(\"--headless\"))时,当我打开 Chrome 浏览器并点击任何网页时,一切都崩溃了,并且没有提供任何证书。

我发现 Firefox 管理配置文件和 PKI 测试证书非常简单!!!当测试在正常模式下运行并完美运行时,我所要做的就是设置 FirefoxOptions.addCommandLineOptions(\"--headless\");它在无头模式下仍然可以完美运行。铬不是这样!

有谁知道正确的解决方案?我可以使用这些信息。我真的被困在这里......有没有办法让 Chrome 仍然以无头模式提供 PKI 证书,或者有人知道这个功能真的不适用于 Chrome/Chromium?那我就可以停止浪费我的时间了!

在此先感谢您的帮助!

    标签: selenium google-chrome ssl


    【解决方案1】:

    好吧,我实际上找到了自己的答案。
    不幸的是,它不起作用!!!

    这一切都在以下问题中进行了解释。
    问题 1310715:无头 Chrome 未使用商店中已安装的客户端(身份验证)证书。

    此问题显示了重现的步骤。

    UserAgent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36

    重现问题的步骤:

    1. 在具有 SSL 证书的浏览器客户端身份验证的 Web 服务器后面有一个网站。
    2. 将证书安装在 Chrome 的证书存储中 $HOME/pki/nssdb 文件夹下。我的证书是 pk12 格式的,所以我使用 pk12util 来安装它。
    3. 安装必须退出并显示:“pk12util: PKCS12 IMPORT SUCCESSFUL”消息。
    4. 在 /etc/opt/chrome/policies/managed 下为您的网站添加一个策略,以便 Chrome 自动将证书提供给该网站的网络服务器。
    5. 打开网站。

      预期的行为是什么? 当浏览器以无头或有头模式启动时,浏览器应将证书提供给网络服务器并继续进行。

      什么地方出了错? 只有在 headful 模式下,浏览器才会向网络服务器提供证书。无头模式没有。日志中有这个错误:

      问题响应指出以下内容:

      Headless Chrome 目前没有实现客户端证书。将此切换为无头人员可以分类的功能请求。机械地,客户端证书来自 //content 通过 CreateClientCertStore 和 SelectClientCertificate。 Headless 无法显示 UI,因此它总是在没有客户端证书的情况下继续运行。

      https://bugs.chromium.org/p/chromium/issues/detail?id=1310715&q=component%3AInternals%3EHeadless&can=2

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 2017-04-12
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 2012-12-25
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多