繁体   English   中英

客户端在WCF中是否需要用于用户名身份验证的证书

[英]Does the client need a certificate for username authentication in WCF

在带有WCF的wsHttpBinding上使用用户名认证时,客户端是否需要安装证书?还是仅在主机上需要? 在任何情况下,此证书是否需要由第三方签名,或者也可以与自签名证书一起使用?

我的理解是,我可以使用自签名证书并进行设置

<authentication certificateValidationMode="None" /> 

在服务器端。 这个对吗?

还有一件事。 如果我使用自签名证书,是否需要将证书放在任何特定的商店中? -自我回答:只要在代码中设置了正确的存储,存储就不重要了。

如果没有传输模式安全性,WCF将不允许用户名身份验证,这意味着您需要证书。

据我所知,有两种方法可以获取适当的证书:

  1. 从受信任的证书颁发机构购买一个。
  2. 自己成为证书颁发机构并创建证书。 除非您控制对话双方,否则这不是很有用。 如果决定自己制作证书,则可以使用MakeCertPvk2PfxOpenSSL创建链接的加密证书。 看看这篇使用OpenSSL的方法文章 最后但并非最不重要的一点是,应将私钥保存在安全的位置。

现在,您应该拥有以下文件(名称用于说明目的):

  • server.cer(服务器的公共密钥)
  • server.pfx(服务器的密钥交换文件)
  • client.cer(客户端的公钥)
  • client.pfx(客户端的密钥交换文件)

然后,您可以执行以下操作:

  • 在服务器上,在本地计算机证书存储中:

    1. 将server.pfx导入“个人”文件夹。 这将允许服务器使用其私钥加密消息,并解密已使用其公钥加密的消息。
    2. 将client.cer导入到Trusted People文件夹。 这将允许服务器使用客户端的公钥加密消息,并解密已使用客户端的私钥加密的消息。
  • 在客户端上,在本地计算机证书存储中:

    1. 将client.pfx导入到Personal文件夹。 这将允许客户端使用其私钥加密消息,并解密已使用其公钥加密的消息。
    2. 将server.cer导入Trusted People文件夹。 这将允许客户端使用服务器的公钥加密消息,并解密已使用服务器的私钥加密的消息。

最后在客户端和服务集的配置文件上:

<authentication certificateValidationMode="ChainTrust"/> 

这将确保只有可以链接到“受信任的根存储”中的证书颁发机构的证书才有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM