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

我是SSL身份验证的新手,我需要使用SSL在信任边界上验证两个架构组件(我可以控制这两个组件).我想我需要双向SSL身份验证,服务器和客户端都有证书.

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

握手如何在服务器和客户端的公钥和私钥方面工作?

我将不得不在IIS中配置服务器以使用cetificate,并使用请求发送客户端证书(最有可能通过使用WCF进行配置?),但是还有其他任务我必须做才能使其工作吗?

最佳答案 使用客户端和服务器证书的双向认证将起作用.您也可以使用自签名证书.但是,如果两个证书都是自签名的,则您需要绕过客户端和服务器上的证书验证,因为它们未由受信任的机构签名.

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

服务器端

> ServerCert.pfx安装到LocalMachine – >个人商店
> ClientCert.cer安装到本地机器 – >受信任的人存储

客户端

> ClientCert.pfx安装到当前用户 – >个人商店
> ServerCert.cer安装到本地机器 – >值得信赖的商店

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

现在,如果您使用自签名证书并且您的客户端正在访问您的服务,那么他将需要绕过证书验证. C#中的示例代码如下:

        System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                                 {
                                                                                     return true;
                                                                                 };

希望有所帮助.

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

点赞