Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Authentication 如何防止客户端检索我的服务器的证书_Authentication_Ssl_Asp.net Web Api_Web Applications_Certificate - Fatal编程技术网

Authentication 如何防止客户端检索我的服务器的证书

Authentication 如何防止客户端检索我的服务器的证书,authentication,ssl,asp.net-web-api,web-applications,certificate,Authentication,Ssl,Asp.net Web Api,Web Applications,Certificate,我有一个用于移动客户端的安全API。我想执行证书固定,我实现了它。问题是,如果运行命令openssl s_client-connect xxx.xxxxxxxxx.com:443,那么我可以看到我的证书。我相信无论谁拥有URL,他们都可以看到证书,并连接到我的API 如何阻止对我的证书的访问,以便只有我的手机可以访问而不是公共的?任何连接到SSL/TLS服务器的人都可以查看服务器的证书,因为它是公共的。这是正常的行为 但这并不意味着它可以连接到您的API。通常情况下,会添加一个身份验证机制,其中

我有一个用于移动客户端的安全API。我想执行证书固定,我实现了它。问题是,如果运行命令openssl s_client-connect xxx.xxxxxxxxx.com:443,那么我可以看到我的证书。我相信无论谁拥有URL,他们都可以看到证书,并连接到我的API


如何阻止对我的证书的访问,以便只有我的手机可以访问而不是公共的?

任何连接到SSL/TLS服务器的人都可以查看服务器的证书,因为它是公共的。这是正常的行为

但这并不意味着它可以连接到您的API。通常情况下,会添加一个身份验证机制,其中连接的人必须提供凭据,例如用户/密码

使用SSL/TLS还可以要求客户端证书来建立安全通道。这称为双向身份验证。但由于分发电子证书的困难,它通常不在移动设备上使用


如果您还没有这样做,我建议将身份验证添加到api中

公钥加密通过让证书的一部分免费公开来工作。解密时需要相应的私钥,私钥应保密

因此,openssl访问证书没有问题——这正是它应该如何工作的!一个网络浏览器也将能够为一个它不太熟悉的网站获取证书

固定添加了进一步的安全层,但将网站可以使用的证书限制为固定到站点的证书。如前所述,在没有私钥的情况下,有人可以解密流量。但是,存在某些相当复杂的攻击,这些攻击包括拦截流量,并使用自己的证书/私钥组合将证书替换为另一个证书,以便读取流量。固定通过明确说明此站点中应允许哪些证书来防止出现这种情况

锁定并不能阻止密钥公开的需要,也不能仅限制您的移动应用程序的连接-有其他解决方案,但锁定不是它。它仅用于解决针对服务器的一种类型的攻击


锁定是一个高级主题,通过锁定证书,然后在续订或更改证书时不更新PIN,很容易意外切断对站点的访问。由于存在这种风险,您应该确保在实施钉扎之前对所有这些工作方式有更深入的了解。目前,您似乎对基础知识有误解,因此建议不要使用诸如固定之类的高级主题。

在TCP/IP套接字层,无法识别像移动浏览器这样的客户端。TLS工作组考虑了一个领域来支持它,但最终拒绝了,因为他们担心协议的复杂性和用户跟踪。它会不时出现在TLS工作组上,尤其是当SSL/TLS堆栈有bug时。其思想是,SSL堆栈指纹识别允许服务器解决客户端错误。上一次出现是苹果的。当你想在套接字级别过滤客户端时,你通常使用IPsec。您的所有移动客户端都将建立到服务器的VPN,并且只有这些移动客户端可以访问这些服务。关于固定,请参阅OWASP上的。标记正在Meta上讨论,简而言之,标记可能不应重定向到标记。相互身份验证也是一个不错的选择。我也建议用客户端证书代替传统的共享密钥。基于网络的攻击者可以通过多种技巧学习或发现共享API密钥。它甚至内置在标准中,比如已知的好插针集都会被攻击者破坏。基于网络的攻击者无法恢复客户端的私钥。您好,Pedrofb/Jww,同意您的方法。是的,我的移动应用程序具有用户id/pwd身份验证,并为添加的安全功能添加了一些令牌机制。唯一担心的是,如果有人越狱,他们可能会查看我的所有应用程序详细信息,即我们从应用程序传递的令牌。想知道如何处理这种情况。在我们的服务器中验证客户端证书会很有趣。让我谷歌一下,看看如何实现它。