几年前,我写了一个Delphi应用程序,它在TWebBrowser中打开了一个内部网站点。该应用程序在Windows XP SP3上运行正常,但在Windows 7上,TWebBrowser显示IE8样式的红色证书错误页面。此外,点击“继续浏览此网站”不会打开该页面。有趣的是,当我在Windows XP上的IE8或Windows 7上的IE9中打开页面时,它会成功打开,浏览器报告没有证书错误。
是否可以以消除证书错误页面的方式配置TWebBrowser或应用程序或Windows本身?
我尝试在管理员模式下运行应用程序,有和没有Windows XP兼容模式。我已将页面证书安装到每个合理的证书库中。我使用IE的安全设置和注册表中的Internet Explorer FeatureControl设置。这些都没有帮助。
答案 0 :(得分:4)
(在David Heffernan的评论之后,我重写了我的答案。)
<强> 1。解决方法强>
在“Internet选项\高级\安全”中关闭“检查服务器certificate revocation”消除了TWebBrowser
中的证书错误页面。请注意,关闭撤销检查会打开安全漏洞(感谢David Heffernan在评论中强调这一点)。
<强> 2。 Windows XP和7之间的区别
不同的行为是由于this option is turned off on Windows XP by default,但在Windows 7上它已经打开了。奇怪的是,在不同的操作系统版本上,此安全设置的处理方式不同。应该修补Windows XP以默认启用此设置。
第3。证书问题
当启用吊销检查时,IE会报告该网站的证书没有问题,并且证书链中的每个证书都可以。这是误导性的,因为如果Internet Explorer功能控件FEATURE_WARN_ON_SEC_CERT_REV_FAILED也打开,IE会显示一个证书警告,上面写着“Internet Explorer无法联系发卡行以确保证书未被撤销”。
<强> 4。静音模式的影响
当启用吊销检查,并且无法联系到发卡行时,TWebBrowser
shows a Security Alert popup的文本“此网站的安全证书的撤销信息不可用。您要继续吗? “不幸的是,当TWebBrowser.Silent
属性为True
时,提示被禁止并自动选择“否”。在我的情况下,启用了静默模式,因为我想隐藏页面的JavaScript错误,因此TWebBrowser
直接跳转到证书错误页面,并且不让我继续。
<强> 5。解决方案
启用撤销检查可以避免安全漏洞,但在这种情况下TWebBrowser.Silent
必须是False
,并且用户必须手动关闭每个弹出窗口(在上面的安全警报弹出窗口中)是“必须单击”。由于我的应用程序自动使用该网站(基于用PascalScript编写的代码),它必须关闭每个弹出窗口(此功能已经实现了确认弹出窗口)。