我正在尝试更改已完成的 Web 服务实现以使用 HTTPS。
我一直在使用as3httpclientlib
(https://code.google.com/p/as3httpclientlib/)。
当我使用非 ssl 端点时,它按预期工作。
但是,当我使用下载页面(https://code.google.com/p/as3crypto/downloads/list)或包含的 SSL 端点和版本 1.3 as3crypt 时,as3crypto-1_3_patched.swc
我得到以下信息:
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 12
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
[Fault] exception, information=TypeError: Error #1009: Cannot access a property or method of a null object reference.
跟踪源自 DER.as 的第 123 行
https://code.google.com/p/as3crypto/source/browse/trunk/as3crypto/src/com/hurlant/util/der/DER.as?r=7
以及X509Certificate.as
https://code.google.com/p/as3crypto/source/browse/trunk/as3crypto/src/com/hurlant/crypto/cert/X509Certificate.as?spec=svn28&r=7第 225 行的错误
当我使用最新版本的as3crypt
https://code.google.com/p/as3crypto/source/detail?r=28我得到
[Fault] exception, information=Error: couldn't parse DER stream.
从https://code.google.com/p/as3crypto/source/browse/trunk/as3crypto/src/com/hurlant/util/asn1/type/SetType.as的第 23 行抛出
我尝试访问的网络服务位于 azurewebsites 上,因此将使用 *.azurewebsites.net 证书。
我也在使用ASC2编译器,这导致了我必须在加密项目中修复的几个错误,包括我发现在 air sdk 3.5 上发布的if (hex.length&1==1) hex="0"+hex;
com.hurlant.util.hex语法错误if ((hex.length&1)==1) hex="0"+hex;
我开始认为这可能与在 Azure 网站上完成 SSL 的方式有关,因为当我完全剥离请求时,我仍然得到同样的错误,但是指向https://www.google.com,我没有错误。
他们在他们的网站上声明:
HTTPS 并不总是有效。as3crypto 库存在一些小错误,例如,雅虎的 https 和雅虎拥有的域(如美味)目前无法正常工作。
我浏览了 as3crypt 的问题列表,想知道其中一个是否包含修复:https ://code.google.com/p/as3crypto/issues/list
有谁知道我为什么会收到这些错误(天蓝色对他们的证书做了什么不同的事情(可能是通配符?))以及我该如何解决?是否有可用的 as3crypto 维护版本?或者有没有更好的方法来使用 Air 移动应用程序中的 https 网络服务?
****更新****
我尝试使用 as3crypto 的补丁版本,但仍然没有乐趣。以下是我的堆栈跟踪出错时的副本。解析证书似乎有错误?
我还研究过改用 SecureSocket,但不幸的是 iOS 不支持它。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SecureSocket.html
AIR 配置文件支持:所有桌面操作系统都支持此功能,但并非所有 AIR for TV 设备都支持此功能。在移动设备上,它在 Android 上受支持,但在 iOS 上不支持。您可以使用 SecureSocket.isSupported 属性在运行时测试支持。
重建:
向 azurewebsites.net 的任何 https 子域发出获取请求。
即以下代码将重现:
var client:HttpClient = new HttpClient();
client.get(new URI("https://httpstest.azurewebsites.net"));