2012-01-04 67 views
3

我正在設計手機遊戲的服務器後端。 iPhone和Android與我的PHP腳本在Linux服務器上進行交互以進行API調用。適用於手機遊戲的SSL

基本上電話在註冊時「知道」他們的遊戲ID(他們被分配了一個),現在這就是我用來驗證的內容。例如,如果用戶的手機是遊戲的主持人(如果他們的ID與主持人表中的條目相關聯),則他們可以編輯該遊戲的規則等。

但是,它發生在我身上不安全。有人可以輕鬆地對我的腳本進行HTTP POST調用,並在遊戲中作弊。

我決定實施SSL來加密在電話和服務器之間來回傳遞的消息。如何找出要購買什麼類型的SSL證書?我可以在哪裏學習設置一個?我沒有這方面的經驗。一些經驗豐富的移動開發人員就最好/最簡單/最具成本效益的建議提供任何建議都會超出其他優勢。

回答

4

你想要做的是採用相互認證的SSL,這樣你的服務器將只接受來自遊戲的傳入連接,而你的遊戲應用只會與你的服務器通信。既然你控制了客戶端(遊戲應用)和服務器,你不需要購買任何東西,但可以依靠自簽名證書。

這是高層次的方法。創建一個自簽名服務器SSL證書並部署到您的Web服務器上。爲此,您可以使用Android SDK附帶的keytool。然後創建一個自簽名客戶端,並將其作爲資源部署在您的應用程序中的一個自定義密鑰庫中(keytool也會生成這個)。你也可以用iOS客戶端遊戲來做到這一點,但我不太確定確切的方法,因爲我主要是做Android開發。將服務器配置爲需要客戶端SSL身份驗證,並僅接受您生成的客戶端證書。配置客戶端使用該客戶端證書來標識自身,並且只接受您在服務器上安裝的那一部分服務器端證書。

如果您的遊戲以外的某人/某件事物嘗試連接到您的服務器,則SSL連接將不會被創建,因爲服務器將拒絕傳入的SSL連接,該連接不會顯示您已包含在您的應用中的客戶端證書。

這是一個比這裏保證的更長的答案。我建議分步實施,因爲網絡上有資源可以處理Android和iOS(服務器和客戶端)的自簽名SSL證書。我的書中還有一個完整的步驟,由O'Reilly出版,Application Security for the Android Platform

+0

好吧,這是一個很好的方向。一旦我設置了它,我如何驗證它成功?作爲一個我習慣於能夠調試的程序員 - 在這裏我不知道成功的SSL握手LOOKS喜歡什麼樣的最終結果。任何指針? – lollercoaster 2012-01-05 03:49:01

+0

只要您在客戶端上指定HTTPS連接,它就可以工作,否則它不會(Android上的HttpsUrlConnection)。您還可以查看服務器日誌和/或在服務器上使用Wireshark等數據包嗅探器來查看網絡流量並驗證其是否使用SSL/TLS加密。 – jeffsix 2012-01-05 10:07:30

相關問題