2010-06-02 32 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