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