2011-09-08 61 views
5

我有一个客户端,由于特定的原因,需要在HTTP页面上放置一个指向HTTPS页面的IFRAME。 HTTP页面托管在与HTTPS页面不同的域和服务器上,但都属于同一个客户端。安全IFRAME嵌套在非安全页面上

暂且不说这个应该没有完成的原因,我发现很难在实践中实施。

可以在此页面看到:http://www.clevelandutilities.com/obppay.htm HTTPS IFRAME在HTTP页面上没有任何来自浏览器(Firefox或IE)的警告。但是,如果我尝试相同的方法,则Firefox和IE都会抱怨证书。

关于这是为什么的任何想法?我已经在该样本网站上查看了源代码,可以看到没有什么特别的做法,但如果我尝试同样的事情,我会大声疾呼。此外,如果我把他们正在使用的域名(https://www.paybill.com/cu/),它不会抱怨 - 如果我把我们的域名,它抱怨。 是否所有的SSL证书都是平等的?

熬下来,这个工程没有警告:

<iframe src="https://www.paybill.com/cu/" width="100%" height="600" scrolling="auto"></iframe> 

这并不:

<iframe src="https://www.myclientdomain.com/somepage.php" width="100%" height="600" scrolling="auto"></iframe> 

此外,我们使用IFRAME式的Facebook应用程序,以管在这个相同的HTTPS页面,并且THAT没有关于SSL证书的投诉。咦?

+0

当您访问iframe源文件('https:// www.example.com/somepage.php')时,您是否收到证书错误?可能是证书CA没有正确信任。如果您可以提供错误消息,它可能也有帮助 - 它是不可信的CA,时间过期,域错误等? – mjec

+0

我们知道了,如果您好奇,请在下面张贴原因。 /捂脸 –

回答

6

挖一点后,我们发现该证书是特定于WWW .myclientdomain.com,并负责开发者已经在使用IFRAME...src="https://myclientdomain.com"...。这是引起下面的“连接不可信”的错误屏幕:

Untrusted error screenshot

主机域名通常的做法是在URL(用的.htaccess执行)从未使用的“www”,而对于标准源域(具有证书的域)始终使用它(使用.htaccess强制执行)。这导致了其他开发者离开了它 - 这是他习惯于他的网站。

如果点击了“我了解风险”,甚至一次为源域添加了证书异常,之后的任何访问都会使其进入htaccess并重定向到www-,这就是为什么我(和其他开发人员)计算机的页面将加载罚款和检查正常在Firebug而我们的老板得到警告。我们两个(显然)在过去因为某种原因增加了这个例外。

当我们把它放在一起,这是一个真正的facepalm时刻。感谢任何人提出这个问题的想法,抱歉没有仔细检查细节。 :)