AIR1.5.3 新功能详解

AIR1.5.3 中最主要的一个功能变化是关于文件publisherid。在以往的版本中,该文件位于<APPDIR>/META‐INF/AIR 目录下。在1.5.3 中,出于安全考虑以及更加方便的适应不断变化的数字签名机制,该文件被移除了。
为了弄清楚为什么要移除该文件,我们来介绍一些必要的背景知识。
这里,我们用一些通俗易懂的语言来帮助你快速理解。publisherid 是什么?简单讲,AIR publisherid 是一个字符串,是使用SHA1 安全哈希算法(Secure Hash Algorithm),根据一些必要的信息,例如ApplicationID,认证信息等等生成的一个字符串来唯一标识该应用。
publisherid 有什么用?在1.5.3 以前的版本中,当某应用发布新版本后,对于已安装的老版本,它会验证两个版本的publisherid 是否相同。如果相同的话,则允许升级安装,即弹出
升级安装窗口, 否则会弹出全新安装窗口。另外, 在Encrypted Local Store(ELS) ,
LocalConnection,Local Storage,In‐Browser API 中都会用到publisherid 来识别该应用。
为什么要移除它?在功能设计的初期,考虑到一个根认证一般的有效期是20 年,所以一般的假设是在这个期间内认证信息不会变化。但是随着安全机制的不断提高,考虑到未来的发展变化,各个认证机构一定会使用更长的密钥来进行认证信息的验证,也就是说,不久的将来用户的认证信息一定会相应的发生变化。在这种情况下,继续使用这种显式的字符串匹配的方式一定会给安全性以及兼容性带来问题。移除以后是不是就不验证了?当然不是了。只不过由publisher ID 换成了application ID 作为唯一标识。同时<publisherID>是一个可选项。当<publisherID>被显式的声明后,其依然是首选认证及识别标识。这个新功能对新老用户的影响是什么?对于新用户,既1.5.3 之后的新应用,开发者无需考虑<publisherID>相关的事项。保留该项作为可选项是为了兼容老用户,既1.5.3 以前的版本。

下面,我们来看几个例子,可以帮助大家更好的理解。

示例<1> <publisherID>是1.5.3 新添加的项,使用以前的namespace 会报错。
<application xmlns="http://ns.adobe.com/air/application/1.5.2">

<publisherID>4875E02D9FB21EE389F73B8D1702B320485DF8CE.1</publisherID>

C:\release153\bin\adt ‐package ‐storetype pkcs12 ‐keystore c:\air.pfx ‐storepass none test.air
app_152.xml adt_test.swf
C: ……\app_152.xml(10): error 103: application.publisherID is an unexpected element/attribute
将1.5.2 改成1.5.3 就没有问题了,可成功生成test.air,并安装运行。

<application xmlns="http://ns.adobe.com/air/application/1.5.3">

[img]http://dl.iteye.com/upload/attachment/187467/7aeff6c2-2f27-39ed-a124-f520e901e86e.jpg[/img]

示例<2>应用升级
先使用1.5.2 做出一个air 包, 其PublisherID:
A24AE7371968A99C8CAB9AD66023B8A93F9A9313.1
使用1.5.3 namespace,并且显式定义<publisherID>
<application xmlns="http://ns.adobe.com/air/application/1.5.3">

<publisherID>A24AE7371968A99C8CAB9AD66023B8A93F9A9313.1</publisherID>
可以看到一个升级安装的窗口

[img]http://dl.iteye.com/upload/attachment/187461/bf67605d-d785-32bf-92f3-b2bba4ffaff5.jpg[/img]

如果不显示定义<publisherID>,会是什么样子?


[img]http://dl.iteye.com/upload/attachment/187463/1402f638-9a2a-3f3e-99d1-06842380357d.jpg[/img]

这个窗口的出现代表AIR 认为这是一个新的应用。
示例<3>认证更新
当一个认证即将过期,续订了同一厂家的证书之后,会出现什么情况呢?
[table]
|AIR APP v1| AIR APP v2 | 结果 |
|NameSpace < 1.5.3 | NameSpace < 1.5.3 | 出现替换窗口 |
|NameSpace = 1.5.3 | NameSpace = 1.5.3 | 出现替换窗口 |
|NameSpace < 1.5.3 | NameSpace = 1.5.3并且定义<PublisherID>与前一版本相同 | 出现替换窗口 |
|NameSpace < 1.5.3 | NameSpace = 1.5.3 未定义<PublisherID> | 出现安装窗口 |
[/table]

示例<4>认证迁移
已经安装了旧版本的AIR 应用,现在准备发布该应用的升级版本,并且使用新的(不同厂家
的)证书。
如果只是使用新的证书打包AIR 程序,将出现无法安装的结果。


[img]http://dl.iteye.com/upload/attachment/187465/be145e98-907a-3ec6-a531-b0f12a8ffdb4.jpg[/img]

这种情况下,当使用新的证书打包后,需要使用旧的证书进行迁移,例如:
旧版本安装包,namespace=1.5.2,使用air.pfx 证书。
C:\adt ‐package ‐storetype pkcs12 ‐keystore c:\air.pfx ‐storepass none test.air
publisherID\app_152.xml adt_test.swf
新版本安装包,namespace=1.5.3,使用eboda_crl_http_good.pfx 证书
C:\adt ‐package ‐storetype pkcs12 ‐keystore c:\eboda_crl_http_good.pfx ‐storepass no
ne test1531.air publisherID\app_153.xml adt_test.swf(直接安装test1531.air 将看到上面的结果)再使用旧证书迁移C:\adt ‐migrate ‐storetype pkcs12 ‐keystore c:\air.pfx ‐storepass none
test1531.air test1532.air
安装test1532.air 即可看到更新窗口

[img]http://dl.iteye.com/upload/attachment/187468/0a199867-66f6-3e73-a556-800e381ee0d6.jpg[/img]

还有一件重要的事情。为了使用户平稳安全的过渡到1.5.3 及更高版本,在旧证书过期6 个
月之内,ADOBE 允许继续使用旧证书进行迁移。超过6 个月,则打包AIR 程序无法成功安装。

--胖哥
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值