如何停止Chrome的“选择证书”窗口

S.A*_*Aux 2 ssl automation google-chrome autoit selenium-webdriver

我正在从事硒项目,我需要测试的系统正在使用SSL证书。每次尝试登录时,我们都会显示“选择证书”窗口。我们无法使用webdriver处理。

Chrome选择一个证书窗口

我尝试使用AutoItx单击“确定”按钮,如下所示。但是,Send("{ENTER}")并不是最好的选择。

if (AutoItX.WinWaitActive("data:, - Google Chrome", "", 10) == 0)
{
   AutoItX.WinActivate("data:, - Google Chrome");
   AutoItX.Send("{ENTER}");
}
Run Code Online (Sandbox Code Playgroud)

有没有一种使用方法,然后使用autoItx单击“确定”按钮。还是有一种方法可以通过使用功能在定义chromedriver时加载此证书。

感谢所有解决此问题的想法。

Ste*_*eve 6

如果您有多个证书并且您要选择的不是第一个,则需要应用过滤器。

http://www.chromium.org/administrators/policy-list-3#AutoSelectCertificateForUrls对过滤器值进行了深入描述,但您可能对其中的大多数不感兴趣,可以使用:

{"pattern":"[*.]","filter":{"ISSUER":{"CN":"[Issued By]"}}}
Run Code Online (Sandbox Code Playgroud)

[Issued By]替换为您的客户端证书的颁发者。我一生都无法让 URL 模式与任何比 [*.] 更具体的东西一起工作,它匹配任何 URL。


小智 5

这对Chrome版本59.0.3071.86(64位),Win 7 Enterprise有所帮助:

创建注册表项:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome \ AutoSelectCertificateForUrls

在这里创建名称为1的新字符串值(REG_SZ)

在数值数据中输入:
{“ pattern”:“ [*。]”,“ filter”:{}}

这就是注册表的样子。

有关此密钥的更多信息,我发现:

该值必须是字符串化JSON字典的数组。每个字典的格式必须为{“ pattern”:“ $ URL_PATTERN”,“ filter”:$ FILTER},其中$ URL_PATTERN是内容设置模式。$ FILTER限制浏览器将自动从客户端证书中选择。与过滤器无关,将仅选择与服务器的证书请求匹配的证书。如果$ FILTER的格式为{“ ISSUER”:{“ CN”:“ $ ISSUER_CN”}},则仅选择由具有CommonName $ ISSUER_CN的证书颁发的客户端证书。如果$ FILTER是空字典{},则不另外限制客户端证书的选择。

自动选择这些站点的客户端证书上

  • 这个解决方案如何应用在linux上? (3认同)
  • REG_SZ 值将如下所示: `{"pattern":"[*.]mycompany.com","filter":{"ISSUER":{"CN":"MyCompanyCA"}}}` 这意味着当您转到任何 **mycompany.com** 子域,它将自动使用 CN(通用名称)为 **MyCompanyCA** 的证书 (2认同)