2012-01-04 63 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