1

我正在使用 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 客户端应用程序上实现它吗?

4

1 回答 1

2

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

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

然后应该信任对该安全服务器的所有后续调用。

于 2010-06-02T21:27:46.347 回答