3

我正在尝试在 Adob​​e AIR 中使用 RESTful Web 服务。URLRequest该服务使用客户端证书进行身份验证,因此我需要设置 AIR/Actionscript在连接到此 RESTful 服务时使用的证书和私钥。

是否可以在 Adob​​e AIR 中设置证书/私钥?

我确实从 Adob​​e 那里找到了一些关于在 Linux 上为 AIR 1.5 添加 SSL 证书存储的文档,但我希望有一个独立于平台的解决方案。

4

3 回答 3

5

我找不到任何方法来做到这一点(好吧,反正还没有)。

Adobe 使用底层操作系统证书存储。在 Windows 中,这意味着与 IE(和 Google Chrome)使用的相同。

我想出的唯一解决方案是,在 linux 下,按照您包含的链接中的说明进行操作,对于 Windows,让用户通过 IE 下载/安装客户端证书(以及服务器根 CA,因为我们有组织的自签名证书),然后 Air 使用这些证书。

这带来了一些烦恼 -

  1. 除非用户安装根 CA,否则会要求他们确认服务器的安全证书。
  2. 将要求用户确认在对服务器的每个请求中都使用了客户端证书(并且在执行大量数据请求的业务应用程序中,这使其无法使用)。要解决这个问题,我发现的唯一方法是让用户进入 IE,去启用Tools -> Internet Options -> Security -> Custom Level -> Miscellaneous -> "Don't prompt for client certificate selection when no certificate or only one certificate exists". 这会停止不断的请求(当然,如果有多个证书,则不起作用。
  3. 尽管所有这些,Adobe Air 仍然会失败,除非用户也在 IE 中转到Tools -> Internet Options -> Advanced -> Security -> "Check for service certificate revocation*"并取消选中它。对于不支持吊销的服务器,这可能只需要使用自签名服务器证书,但我不确定。

无论如何,正如你所看到的,这一切都是一团糟。

于 2010-05-16T22:20:39.593 回答
0

所以差不多一年后......它可以在 JavaScript 中完成,这可能会或可能不会有一些帮助,使用开源项目 Forge:

http://github.com/digitalbazaar/forge/blob/master/README

WebID 演示当前使用 Forge 提供客户端证书作为身份验证机制。这只是一个演示,所以 SSL 证书是自签名的:

https://webid.digitalbazaar.com/manage/

https://payswarm.com/webid-demo/

于 2010-10-25T21:17:06.960 回答
0

有一个类: http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SecureSocket.html

相信 addBinaryChainBuildingCertificate 方法应该可以完成这个任务。

于 2013-03-28T14:46:23.533 回答