安卓应用和服务器之间的客户端-服务器通信

4
我正在开发一款与网络服务器进行身份验证和获取数据的安卓应用。我使用自签名证书在服务器上建立 HTTPS/SSL 通信,并将该证书允许在安卓应用程序中使用。这样,我就可以确保我正在与正确的服务器通信。但是,如何确保服务器收到来自正确客户端的请求?
如果我欺骗浏览器发送HTTP请求到服务器会怎么样?
服务器怎么知道是否从安卓应用程序获取请求?有没有办法限制服务器只��理来自移动应用程序的请求?
1个回答

2

这是一个复杂的问题。

你可以拥有一个私有证书和其对应的公共证书,并由服务器认可的CA进行签名(只需在相应的密钥库中添加CA公共证书)。 该解决方案的主要复杂性在于: - 如果有人窃取了证书并在另一台设备上使用它,那么这个问题就很棘手了(如果对于你的应用程序而言这个问题可以忽略不计,那么这个解决方案是可以接受的); - 证书分发和过期:你需要一个引导、证书分发以及在证书到期前执行的操作的解决方案。

其他解决方案可能涉及使用设备ID,有些供应商提供此服务,并使用一次性密码。


非常感谢Rodolk。这对我很有帮助。继续我的上一个问题。我正在尝试通过浏览器连接到我在主要问题中提到的Web服务器,我可以使用http连接,但是当我尝试使用https连接时,服务器会终止连接。我的理解是服务器上只安装了自签名的SSL证书,因此服务器应该发送其证书并且浏览器应该弹出不受信任证书的窗口。服务器上没有进行客户端身份验证,那么为什么服务器会终止连接呢?如果我错了,请纠正我。 - Prabhuraj
@Prabhuraj,很高兴我的回答对您有用。如果您能标记一下,我会非常感激。关于服务器关闭连接的下一个问题,可能是由于不同的问题导致的。如果您可以在服务器上运行Wireshark并将带有SSL握手的嗅探文件传递给我,我就能够帮助您了。也许最好是在另一个问题中处理它,这样其他人就可以从我们的工作中受益,并且不必遵循评论线程。 - rodolk
当然,Rodolk。谢谢你。 - Prabhuraj
你获取了SSL握手的嗅探吗?有了它,我们就能解决问题了。 - rodolk
抱歉,Rodolk。服务器不在我们的控制范围内。我正在与服务器团队沟通。 - Prabhuraj
嗨,Rodolk。我检查了服务器日志。只是因为我尝试连接错误的HTTPS端口。现在我已经纠正了它,它正常工作了。非常感谢 :) - Prabhuraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接