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

20

我正在进行一个Selenium项目,需要测试的系统正在使用SSL证书。每次尝试登录时,我们会得到这个“选择证书”窗口,而我们无法通过WebDriver处理它。

Chrome 选择证书窗口

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

if (AutoItX.WinWaitActive("data:, - Google Chrome", "", 10) == 0)
{
   AutoItX.WinActivate("data:, - Google Chrome");
   AutoItX.Send("{ENTER}");
}
有没有一种方法可以使用AutoItX单击“确定”按钮?或者我们是否可以在定义ChromeDriver时使用Capabilities来加载此证书?
2个回答

22

Chrome版本59.0.3071.86(64位),Win 7企业版:

创建注册表键:

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是空字典{},则不会额外限制选择客户端证书。

请参阅为这些站点自动选择客户端证书以获取更多信息。

Chrome版本87.0.4280.141(64位),Win 10 Enterprise:

创建注册表键:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls  

在此创建一个名为1的新字符串值(REG_SZ)

将数值数据输入为:

{"pattern":"[*.]mycompany.com","filter":{"ISSUER":{"CN":"MyCompanyCA"}}}

这里输入图片描述

必须将MyCompanyCA和子域名mycompany.com替换为您对应的网址和颁发公司。


1
这在Windows 7机器上运行良好,但在Windows 10上不行。有没有办法让它在Windows 10电脑上工作?(Chrome v59) - posix99
$URL_PATTERN 的格式是什么?它是一个正则表达式模式还是使用 * 作为通配符,或者只是一个普通字符串,没有特殊的模式匹配功能? - Steve
2
REG_SZ值将如下所示: {"pattern":"[*.]mycompany.com","filter":{"ISSUER":{"CN":"MyCompanyCA"}}}这意味着当您访问任何mycompany.com子域时,它将自动使用具有CN(公共名称)为MyCompanyCA的证书。 - roryhewitt
3
这个解决方案如何在Linux上应用? - Seeker001

7
如果您有多个证书,而您要选择的证书不是第一个,则需要应用过滤器。http://www.chromium.org/administrators/policy-list-3#AutoSelectCertificateForUrls提供了对过滤器值的深入描述,但您可能对其中大部分内容不感兴趣,可以使用以下内容:
{"pattern":"[*.]","filter":{"ISSUER":{"CN":"[Issued By]"}}}

[Issued By]替换为您的客户端证书的颁发机构。我尽力了,但我无法通过任何比[*.]更具体的URL模式使其工作,该模式与任何URL匹配。


链接不再有效,它会将用户重定向到一个通用页面。:( - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接