我有一个包含自签名https链接的网址的iframe。在正常情况下,浏览器要求添加此类链接的例外,但在iframe中不允许添加例外。它只是提示错误代码:sec_error_ca_cert_invalid。任何想法如何在自签名网址的情况下提示在iframe中添加证书例外?
答案 0 :(得分:5)
首先,提示窗口中 root 文档的SSL例外与iframe 中显示的文档之间的区别是一个重要的安全问题。如您所知,用户不知道iframe中显示的URL(或者在这种情况下,尝试加载)。如果浏览器的例外机制显示在iframe中,则用户会在完全不同的域上看到浏览器的地址栏显示 root 文档的URL。从安全角度来看,这可能会导致用户混淆,并最终导致错误的不安全的选择。
您不应期望在现代浏览器中找到改变此行为的黑客/解决方法。
也就是说,如果iframe不显示提示,那么最简单的解决方法是从iframe的域中获取一个页面作为窗口的根文档加载因此触发提示。请考虑以下顺序:
www.example.com/entry
www.dynamic.example
www.dynamic.example/redirect
www.dynamic.example/redirect
作为正常页面加载,作为浏览器窗口中的 root 文档。
sec_error_ca_cert_invalid
www.dynamic.example/redirect
,这次根据用户的说明接受自签名证书。
www.dynamic.example
上的此网址应立即重新返回到www.example.com
上另一个众所周知的位置,让我们说:www.example.com/pageWithIFrame
< / LI>
www.example.com/pageWithIFrame
www.dynamic.example
www.dynamic.example
的自签名证书,因此应该呈现该iframe中的内容。此解决方案仅使用HTTP重定向,并且不需要代理服务器或将SSL / TLS降至明文HTTP。但是,它确实需要您的站点(www.example.com
)与具有自签名证书的任何其他域之间的协作。如果其他域无法重定向回您(例如,在没有该域知识的情况下嵌入内容),它将不工作。
同一个重定向链也适用于提供由受信任CA签名的证书的站点。在这种情况下,步骤2将立即转换到步骤3,而无需用户干预。
答案 1 :(得分:2)
嗯,除了提供接受自签名证书的自定义Chrome / Firefox / Safari之外,您唯一的选择是:
你无法用HTML / JavaScript来做任何事情&#34;破解你的方式&#34;。
修改强>
另一种选择是在您的应用程序(IFRAME)和第三方服务器(例如Apache HTTP Server作为代理服务器)之间设置代理服务器。它可以:
如果您的网络应用程序在本地Tomcat服务器(或类似服务器)中运行 - 例如http://tomcat:8080/app/
- 可以通过将Apache HTTP Server添加为代理来改进第二个选项:
ProxyPass /app/* http://tomcat:8080/app/*
ProxyPass /3rd/* https://third-party/*
用户只需访问一个URL - 默认端口80的Apache代理 - http://tomcat/app/
。