【问题标题】:Flex/AIR + GraniteDS through SSL通过 SSL 的 Flex/AIR + GraniteDS
【发布时间】:2010-06-02 19:57:41
【问题描述】:

我正在使用 SSL 运行 JBoss,证书是使用 openssl 生成的:

      <Connector protocol="HTTP/1.1" SSLEnabled="true" 
       port="8443" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false" 
       keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"
       keystorePass="password" sslProtocol = "TLS" />

我的客户端是一个 AIR 应用程序,它通过 GraniteDS 与 Java EE 服务器交互。在 Flex/AIR 方面,我将频道更新为 services-config.xml 上的 SecureAMFChannel:

<channel-definition id="myApp-graniteamf" class="mx.messaging.channels.SecureAMFChannel">
        <endpoint uri="https://localhost:8443/myApp/graniteamf/amf"
        class="flex.messaging.endpoints.SecureAMFEndpoint" />
    </channel-definition>

现在,当我从客户端连接时,AIR 会询问我是否要继续连接(查看证书等)。

我是整个 SSL/HTTPS 概念的新手,但我已经阅读了一些文档。我现在想弄清楚的是如何让我的应用程序知道服务器是安全的(在这种情况下是本地主机)。从我目前得到的情况来看,客户端应用程序应该“信任服务器作为 CA”,或者只信任来自某个服务器的证书。

您能否给我一些线索,让我知道从哪里开始在我的 AIR 客户端应用程序上实现这一点?

【问题讨论】:

    标签: apache-flex ssl air graniteds


    【解决方案1】:

    如果我理解正确,您使用的是自签名证书。按照这个假设,您不能强制用户通过您的 AIR 应用程序接受证书,这将是一个安全漏洞。要从您的 AIR 应用程序中获得可信的调用,用户需要将您的证书(或您签署证书时使用的不受信任的 CA)导入他们自己的密钥库。

    您执行此操作的方式因每个操作系统而异,但如何在 Windows 中执行此操作的示例是在 IE 中浏览您的服务器,获取证书警告,查看证书详细信息,然后将证书导出到文件 (X509 iirc)。然后您可以右键单击证书文件并选择安装证书。

    随后对该安全服务器的所有调用都应受到信任。

    【讨论】:

    • 是的,我们使用的是自签名证书。当应用程序投入生产时,我们应该获得真正的证书,但与此同时,我们每次都被要求提供证书。所以现在我应该寻找一种通过空气导入证书的方法,对吧?
    • 听起来您现在只是遇到了开发问题,因为当您获得真正的证书时,它将由受信任的 CA 之一签名。现在,您需要为正在测试的每台机器执行手动步骤,以允许调用工作而不会收到警告。不幸的是,您无法让 AIR 为您将证书导入用户系统。
    • 谢谢!我已经记录了整个过程,只要应用程序还在开发中,我们就会通过 HTTP 保持连接。我们将在购买真正的证书时切换它。在这个过程中,我学到了很多关于 SSL、HTTPS 和证书的知识。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多