2010-06-02 47 views
1

我运行JBoss使用SSL,与OpenSSL的生成证书:的Flex/AIR + GraniteDS的通过SSL

 <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的身边,我的频道更新到的SecureAMFChannel在services-config.xml中:

<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概念,但我读过一些文档。我现在想弄清楚的是如何让我的应用程序知道服务器是安全的(本例中是localhost)。从我到目前为止,客户端应用程序应该“将服务器信任为CA”,或者只是信任来自某个服务器的证书。

你可以给我一些线索,从哪里开始在我的AIR客户端应用程序中实现这个?

回答

2

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

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

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

+0

是的,我们正在使用自签名认证。我们应该在应用程序投入生产时获得真正的证书,但与此同时,我们每次都会被要求提供证书。所以现在我应该寻找一种通过空气导入证书的方式,对吧? – 2010-06-02 22:19:10

+0

听起来像你现在只有发展问题,因为当你得到真正的证书时,它将由一个可信CA签署。现在,您需要为正在测试的每台机器执行手动步骤,以便在未收到警告的情况下进行通话。不幸的是,您不能让AIR将您的证书导入用户系统。 – 2010-06-02 22:32:32

+0

谢谢!我记录了整个过程,只要应用程序处于开发阶段,我们就通过HTTP保持连接。我们会在购买真正的证书时切换它。我在这个过程中学到了很多关于SSL,HTTPS和证书的知识。再次感谢! – 2010-06-03 16:59:10