以下实现了当Chrome浏览器访问HTTPS双向认证的网站时,自动选择客户端证书。
以下在Windows 7环境进行验证。
客户端在导入PKCS# 12证书(pfx或p12格式)后,可使用“certmgr.msc”命令打开证书管理器查看证书,或使用Chrome的管理证书功能查看证书。
假如当前已导入颁发者为client_url的证书,使用证书管理器查看如下。
或使用Chrome的管理证书功能查看如下。
当未设置Chrome自动选择客户端证书时,访问需要进行双向认证的网站时,需要手工选择对应的客户端证书。使用Chrome访问测试用的双向认证网站,如下所示。
当选择对应的证书后,成功访问时页面显示如下。
当未选择对应的证书时,无法访问网站,显示如下。
Chrome的引擎Chromium关于策略的文档为“ http://www.chromium.org/administrators/policy-list-3” ,“AutoSelectCertificateForUrls”选项的作用为“Automatically select client certificates for these sites”,用于设置自动选择客户端证书。
在Chrome中,打开“ chrome://policy/ ”页面可查看Chrome策略,当未设置策略时显示如下。
从Chrome 28开始,Chrome在Windows环境通过组策略API获取,这意味着无法再单纯通过注册表配置Chrome策略(加入Active Directory域的Windows仍支持注册表方式配置)。
通过组策略方式配置Chrome策略可参考文档“ http://jackstromberg.com/2013/08/configuring-google-chrome-via-group-policy/ ”。
通过 http://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip 下载Chrome的策略模板。
Windows7使用的组策略模板文件为admx格式,解压policy_templates.zip文件,将windows\admx目录的chrome.admx文件拷贝至Windows组策略模板文件目录C:\Windows\PolicyDefinitions中;将windows\admx\zh-CN目录的chrome.adml文件拷贝至中文版本对应的C:\Windows\PolicyDefinitions\zh-CN目录中。
使用“gpedit.msc”命令打开组策略编辑器,需要具有管理员权限。
完成前一步骤的Chrome策略模板添加后,在组策略中会出现Chrome的策略配置选项,“计算机配置”“管理模板”“Google”“Google Chrome”“内容设置”目录的“自动选择这些网站的客户端证书”选项用于设置Chrome自动选择客户端证书,如下图所示。
“自动选择这些网站的客户端证书”选项即为AutoSelectCertificateForUrls选项。该选项的说明如下。
打开“自动选择这些网站的客户端证书”选项,选择“已启用”,点击“显示”按钮,弹出“显示内容”窗口,双击列表后可编辑策略,可设置多条策略,如下图。
策略的示例如下。
{"pattern":"https://www.example.com\","filter":{"ISSUER":{"CN":"certificate issuer name"}}}
假如将策略设置为访问“https://127.0.0.1”链接时,自动选择CommonName为“client_url”的证书,则策略内容如下。
{"pattern":"https://127.0.0.1","filter":{"ISSUER":{"CN":"client_url"}}}
为了实现双向认证自动选择客户端证书,应当添加颁发者证书cn信息,并加载插件设置项。
AutoSelectCertificateForUrls策略配置完成后,保存在以下注册表项中。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{[CLSID]}Machine\Software\Policies\Google\Chrome\AutoSelectCertificateForUrls
在Chrome中打开“ chrome://policy/ ”查看策略如下,可看到“AutoSelectCertificateForUrls”策略已被配置。
访问上述策略对应的网站,查看是否需要手工选择客户端证书,也可验证策略是否设置成功。
完成Chrome策略手工配置后,策略设置内容会被保存至“C:\Windows\System32\GroupPolicy\gpt.ini”与“C:\Windows\System32\GroupPolicy\Machine\Registry.pol”文件中。gpt.ini文件的[General]节点的gPCMachineExtensionNames属性值为“[{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{D02B1F72-3407-48AE-BA88-E8213C6761F1}]”,Registry.pol文件保存了AutoSelectCertificateForUrls策略配置。
将完成Chrome策略手工配置后的“C:\Windows\System32\GroupPolicy\gpt.ini”与“C:\Windows\System32\GroupPolicy\Machine\Registry.pol”文件拷贝至未进行配置的系统中,执行“gpupdate /force”命令更新组策略(需要具有管理员权限),等待提示“用户策略更新成功完成。计算机策略更新成功完成。”,说明组策略更新成功。
gpt.ini文件中的Version值不影响属性修改,可设为1。
使用上述方式批量配置Chrome策略时,不需要打开gpedit.msc或注销用户或重启Windows,若策略未生效,需重启Chrome。