gpt4 book ai didi

c# - SSL/TLS 中的相互认证

转载 作者:行者123 更新时间:2023-11-30 12:32:10 33 4
gpt4 key购买 nike

我是 SSL 身份验证的新手,我需要通过 SSL 的信任边界对两个架构组件进行身份验证(我可以控制这两个组件)。我想我需要两种方式的 SSL 身份验证,服务器和客户端都具有证书。

证书可以自签名吗? (即,由供应商签名,这不会首先使用 SSL 无效?或者我是否需要第三方验证服务来确保证书的身份?)

就服务器和客户端的公钥和私钥而言,握手如何工作?

我将不得不在 IIS 中配置服务器以使用证书,并随请求发送客户端证书(最有可能通过使用 WCF 进行配置?),但是我还需要做任何其他任务来使这项工作正常进行吗?

最佳答案

使用客户端和服务器证书的 2 路身份验证将起作用。您也可以使用自签名证书。但是,如果两个证书都是自签名的,因为它们不是由受信任的机构签名,则您需要绕过客户端和服务器上的证书验证。

在安装证书方面,应按如下方式进行:

服务器端

  • ServerCert.pfx 安装到 LocalMachine --> 个人存储
  • ClientCert.cer 安装到本地机器 --> Trusted People store

  • 客户端
  • ClientCert.pfx 安装到当前用户 --> 个人存储
  • ServerCert.cer 安装到本地机器 --> 可信存储

  • 您需要将 ServerCert.cer 文件发送给客户端,而客户端需要将 ClientCert.cer 发送给您。

    现在,如果您使用自签名证书并且您的客户正在访问您的服务,那么他将需要绕过证书验证。下面的 C# 示例代码:
            System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
    {
    return true;
    };

    希望有帮助。

    注意:从安全角度来看,不建议在生产环境中使用自签名证书或绕过证书验证。

    关于c# - SSL/TLS 中的相互认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11812793/

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