gpt4 book ai didi

security - 客户端证书和证书固定之间的区别,我需要两者吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:58 25 4
gpt4 key购买 nike

我有一个公开的 .net WEB API 和一个使用该 API 的 Xamarin Forms 应用程序,由于它管理的数据,该应用程序需要非常安全。

我将为 WEB API 创建一个 HTTP 证书。Xamarin Forms 应用程序将有一个登录名/密码来根据本地 Active Directory 进行验证。通过/token 端点,并在所有端点上使用 Authorize 属性以确保每个 HTTP 调用都包含不记名 token ,我使用以下方法实现了这一点:

我的实现基于这个: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

此外,客户要求我们提供客户端证书身份验证,我不明白这是怎么回事。1.我需要给Xamarin Project添加证书,对吧?我如何添加它?我如何生成它?2. 在 Web API 中,我需要验证每个 http 调用都附有证书。我找到了这个但不确定它是否有效: http://www.razibinrais.com/secure-web-api-with-client-certificate/

然而,在对此进行调查时,我还发现了一些关于证书固定的信息,这基本上是安全的,但反过来,这意味着 Xamarin APP 将验证服务器证书是否与正确的服务器(或类似的东西)相关联,所以没有办法进行中间人攻击。我在这里找到了如何实现它: https://thomasbandt.com/certificate-and-public-key-pinning-with-xamarin

问题是:1. 我需要两者吗?

在这段旅程中我还应该研究什么?

最佳答案

证书固定和客户端证书身份验证是两个截然不同的事物。证书固定可确保您的应用程序正在与其预期与之通信的服务器通信。它还可以防止窃听,这被称为“中间人”攻击。我最近刚刚写了一篇关于这个的文章 on my blog .

客户端证书身份验证以相反的方式工作。它增加了额外的安全层,因此您的服务器可以确保只有拥有证书的客户端才能与其成功通信。然而,由于应用程序可以毫不费力地反编译,恶意用户可以“轻松”获取此客户端证书。所以这不是 Elixir 。

根据我的经验,当存在企业移动管理解决方案(例如 Mobile Iron 或 Microsoft Intune 或其他)时,客户端证书身份验证通常用于企业应用程序中,EMM 解决方案可以将证书推送给用户设备带外。

你应该同时使用两者吗?这实际上取决于客户的要求,因为它们缓解了 2 个截然不同的问题。

您包含的 Web API 链接乍一看应该可以正确地完成服务器工作。本文还包括如何使用 Powershell 命令生成客户端证书。

生成客户端证书:

安装:

  • 将证书文件作为资源添加到每个特定于平台的项目中。这通常以 .p12 文件的形式完成。

用法:

  • 这完全取决于您使用的是哪个 HttpClient。
  • 如果您使用提供的 Web API 解决方案,则应将证书内容添加为每个请求的 X-ARR-ClientCert header 。

关于security - 客户端证书和证书固定之间的区别,我需要两者吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43667772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com