【问题标题】:SSL Client Side Certificate authentication in Adobe AIRAdobe AIR 中的 SSL 客户端证书身份验证
【发布时间】:2010-02-02 21:13:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: flash actionscript-3 ssl air urlrequest


    【解决方案1】:

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

    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*" 并取消选中此选项。这可能仅对不支持吊销的服务器的自签名服务器证书是必需的,但我不确定。

    无论如何,如您所见,这一切都是一团糟。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-29
          • 2011-04-09
          • 2013-10-07
          • 1970-01-01
          • 1970-01-01
          • 2022-06-23
          • 2023-04-10
          相关资源
          最近更新 更多