Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保android应用程序正在访问真实服务器_Java_Android_Servlets_Ssl - Fatal编程技术网

Java 如何确保android应用程序正在访问真实服务器

Java 如何确保android应用程序正在访问真实服务器,java,android,servlets,ssl,Java,Android,Servlets,Ssl,我已经用运行RESTAPI的servlet实现了HTTPS连接。 设备能够使用HTTPS连接到服务器。 设备正在接受服务器的证书并建立HTTPS 如何确保设备只接受特定的证书?其目的是,不应该有人能够使用自签名证书设置一个假服务器,将自己标识为正确的服务器 在浏览器环境中,用户会在url中看到Chrome划掉的https,并知道证书未经验证。如何确保应用程序的验证。该过程称为证书验证,非常标准。一些类和组件为您执行验证,其他类和组件留给您手动实现和控制 验证可确保(在理想情况下)连接到合法服务器

我已经用运行RESTAPI的servlet实现了HTTPS连接。 设备能够使用HTTPS连接到服务器。 设备正在接受服务器的证书并建立HTTPS

如何确保设备只接受特定的证书?其目的是,不应该有人能够使用自签名证书设置一个假服务器,将自己标识为正确的服务器


在浏览器环境中,用户会在url中看到Chrome划掉的https,并知道证书未经验证。如何确保应用程序的验证。

该过程称为证书验证,非常标准。一些类和组件为您执行验证,其他类和组件留给您手动实现和控制

验证可确保(在理想情况下)连接到合法服务器,即主机名与所提供证书中的名称匹配的服务器。这要求服务器为所需的主机名获取有效的CA签名(由于缺乏安全性和灵活性,我们省略了自签名变体)证书。到目前为止还不错

现在,您可以依赖预实现的证书验证,也可以实现自己的验证,或者将自己的检查添加到预实现的验证过程中。实现您自己的验证对于您的任务来说太麻烦了,所以让我们假设您使用的客户机代码已经执行了一些验证(您没有指定用于连接的确切代码,因此我无法对其进行评论)。你可以依赖它,但是在一些国家,国家机构会对流量进行净化,为此,他们获取(或在某些情况下动态生成)证书,这些证书本质上是假的,但如果我们盲目遵循验证程序,则是有效的

因此,如果您同时控制服务器和客户端,并且还可以实现额外的验证(您的客户端组件或类允许您这样做),那么您的额外检查可以是将证书的颁发者(或整个证书链)与您知道的有效颁发者进行比较。这不太灵活,并且在某种程度上违反了PKI规则,但这种方法大大减少了生成假证书并将其视为有效证书的机会。其思想是,您知道您使用的是什么证书以及您使用的是什么CA(将来可能会使用),因此您可以将此信息存储在客户机中,并在验证期间对其进行比较


您只需在此处搜索“certificate validation”,就可以了解有关证书验证的更多信息—这是一个非常流行的话题

谢谢。已从SO获取此引用:。我们会在这方面再做一些试验吗