我正在使用 HTTPS 测试我的 Adobe Flash 应用程序与服务器的通信。
如果我向 https://localhost
发出请求,一切都很好。但是,如果请求 url 设置为 https://192.168.0.1
,则 URLLoader 将失败并出现此 Stream 错误:
Error #2032: Stream Error. URL: https://192.168.0.1/path-to-script/
如果我在浏览器中调用该 URL,我会收到一个安全警告,我可以覆盖(在 Chrome 中):
This is probably not the site you are looking for!
[Proceed anyways] [Back to safety]
当然是因为证书的名称(“localhost”)与 IP 地址不匹配。
现在,是否可以忽略/抑制该警告/错误?例如我是否可以使用 flash.net.Socket 类?
更新
我现在做了更彻底的测试。
我已经使用的crossdomain.xml:
<?xml version="1.0"?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*" secure="false" />
<allow-http-request-headers-from domain="*" headers="*" />
</cross-domain-policy>
工作场景:
Flash 在 http://www.domain-A.com
上托管和加载
URLLoader 请求 https://www.domain-B.com/demo.html
不工作:
Flash 仍然从 http://www.domain-A.com
托管和加载
URLLoader 请求到 https://{IP_OF_SERVER}/demo.html
问题是,由于“错误的证书名称”错误,Flash 甚至不加载 crossdomain.xml
。 (因为证书是为 www.domain-B.com
而不是 IP 地址颁发的)
具体错误信息:
*** Security Sandbox Violation ***
Request for resource at https://{IP_OF_SERVER}/demo.html by requestor from http://www.domain-A.com/flash/demo.swf is denied due to lack of policy file permissions.
要了解会发生什么:
打开https://65.54.186.107/在你的浏览器中(它是 https://login.live.com 的 IP)
要访问该网站,您必须确认/忽略警告。
“这可能不是您要找的网站!”在谷歌浏览器中
Firefox 中的“此连接不受信任”
“这个网站的安全证书有问题。”在 IE 中
...
我正在寻找一种在 Flash 中“忽略”此警告的方法。
结论
如果没有办法告诉 Flash 忽略 SSL“错误的证书名称”错误,我只能想到深入研究 flash.net.Socket类。
还有其他想法吗?
最佳答案
我得出的结论是,它无法解决。证书名称必须与域名匹配,否则通信将失败。
毕竟,这是一项安全措施。 (比较:网站也没有办法告诉浏览器覆盖安全警告。)
只有当 Adobe 也实现此类安全警告(在未来版本的 Flash 中)并让用户决定是否继续时,证书才能颁发给另一个域名。
如果您必须使用 IP 地址而不是域名,您可以考虑购买颁发给 IP 地址而不是域名的证书:http://www.ssl247.com/ssl-certificates/type/ip-address
关于flash - 错误的证书名称导致 Adobe Flash 电影中的安全沙箱冲突错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142137/