我正在尝试在 Adobe AIR 中使用 RESTful Web 服务。URLRequest
该服务使用客户端证书进行身份验证,因此我需要设置 AIR/Actionscript在连接到此 RESTful 服务时使用的证书和私钥。
是否可以在 Adobe AIR 中设置证书/私钥?
我确实从 Adobe 那里找到了一些关于在 Linux 上为 AIR 1.5 添加 SSL 证书存储的文档,但我希望有一个独立于平台的解决方案。
我正在尝试在 Adobe AIR 中使用 RESTful Web 服务。URLRequest
该服务使用客户端证书进行身份验证,因此我需要设置 AIR/Actionscript在连接到此 RESTful 服务时使用的证书和私钥。
是否可以在 Adobe AIR 中设置证书/私钥?
我确实从 Adobe 那里找到了一些关于在 Linux 上为 AIR 1.5 添加 SSL 证书存储的文档,但我希望有一个独立于平台的解决方案。
我找不到任何方法来做到这一点(好吧,反正还没有)。
Adobe 使用底层操作系统证书存储。在 Windows 中,这意味着与 IE(和 Google Chrome)使用的相同。
我想出的唯一解决方案是,在 linux 下,按照您包含的链接中的说明进行操作,对于 Windows,让用户通过 IE 下载/安装客户端证书(以及服务器根 CA,因为我们有组织的自签名证书),然后 Air 使用这些证书。
这带来了一些烦恼 -
Tools -> Internet Options -> Security -> Custom Level -> Miscellaneous -> "Don't prompt for client certificate selection when no certificate or only one certificate exists"
. 这会停止不断的请求(当然,如果有多个证书,则不起作用。Tools -> Internet Options -> Advanced -> Security -> "Check for service certificate revocation*"
并取消选中它。对于不支持吊销的服务器,这可能只需要使用自签名服务器证书,但我不确定。无论如何,正如你所看到的,这一切都是一团糟。
所以差不多一年后......它可以在 JavaScript 中完成,这可能会或可能不会有一些帮助,使用开源项目 Forge:
http://github.com/digitalbazaar/forge/blob/master/README
WebID 演示当前使用 Forge 提供客户端证书作为身份验证机制。这只是一个演示,所以 SSL 证书是自签名的:
有一个类: http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SecureSocket.html
相信 addBinaryChainBuildingCertificate 方法应该可以完成这个任务。