x509 证书问题, WCF 客户端和服务器端通信, 能只在WCF 服务器端单方面认证吗? 不想给客户端设证书, 可以的话,config怎么设置...

abcdefu520 2008-04-18 06:50:35
x509 证书问题, WCF 客户端和服务器端通信, 能只在 WCF 服务器端单方面认证吗? 可以的话,config怎么设置...

现在WCF 程序,双方都设 证书, 通信成功, 如果假设,WCF 客户端很多.我不想认证客户端,只想,客户端认征 WCF 服务器端, 给 WCF 服务器设 证书, config 该怎么设置,,求救!!!!

我尝试了几个方法,不成功,,求救!!!!

现在的相关的 config如下:

服务器端..

<behaviors>
<serviceBehaviors>
<behavior name="WCF.Service1Behavior">

<serviceCredentials>

<clientCertificate>
<authentication certificateValidationMode="ChainTrust"/>
</clientCertificate>

<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WCF.CustomUserNameValidator,WCF"/>

<serviceCertificate findValue="MyServer" storeLocation="CurrentUser" x509FindType="FindBySubjectName"/>

</serviceCredentials>

<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>

客户端:
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior">
<clientCredentials>
<clientCertificate findValue="Client1" x509FindType="FindBySubjectName" />
<serviceCertificate>
<authentication certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>

...全文
441 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
laolaowhn 2012-05-15
  • 打赏
  • 举报
回复
必须让服务器端忽略客户端的证书验证,所以必须重写X509CertificateValidator然后空实现Validate
public class CustomX509CertificateValidator : X509CertificateValidator
{
// Methods
public CustomX509CertificateValidator();
public override void Validate(X509Certificate2 certificate);
}

<behaviors>
<endpointBehaviors>
<behavior name="LogServiceBehavior">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="Custom" customCertificateValidatorType="Sunivo.Common.Validation.CustomX509CertificateValidator,Sunivo.Common"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
jackyhzzjcn 2008-06-29
  • 打赏
  • 举报
回复
abcdefu520 2008-04-23
  • 打赏
  • 举报
回复
搞定了..不好意思...... 谢谢....5.1 可以回家玩拉...哈哈....谢谢.,...

lhzyn 不好意思让你白来一趟...


possible_Y
██本人签名需要刮开,方可看到


看不到签名..谢谢...
abcdefu520 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lhzyn 的回复:]
我们的客户端配置如下:
<behaviors>
<endpointBehaviors>
<behavior name="ClientCertificateBehavior">
<clientCredentials>
<serviceCertificate> <authentication certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
这并不一定是你说想要的,看看这个
http://forums.microsoft.com/MSDN/ShowPost.aspx…
[/Quote]

我客户端的配置也是这样的.

我们服务器是放在.IIS上面的.所以怎么样也不行,如果是自己写的HOST的话,是成功的.
现在.怎么也拿不到数据..

把你服务器端的配置也放上来,看看.
abcdefu520 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sp1234 的回复:]
引用 3 楼 abcdefu520 的回复:

回楼上,我现在的.证书 .只是用来证明是不是真正的服务器端发过来的请求,证明这个服务器不是假的.而我不想应证客户端,难道这样不行吗???


谁是服务器?是谁发起请求的?
[/Quote]

跟DB连接的是服务器. 获取数据的是客户端
possible_Y 2008-04-22
  • 打赏
  • 举报
回复
不行

因为WCF会使用证书来给消息加密和签名,以保证其完整性,唯一性(不可被篡改)和安全性(其他人即使截获也看不懂)
所以只要你使用了WCF的Authoration,即使你用的是UserPassword方式的身份验证,WCF也会要求你必须使用证书
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 abcdefu520 的回复:]

回楼上,我现在的.证书 .只是用来证明是不是真正的服务器端发过来的请求,证明这个服务器不是假的.而我不想应证客户端,难道这样不行吗???
[/Quote]

谁是服务器?是谁发起请求的?
lhzyn 2008-04-21
  • 打赏
  • 举报
回复
我们的客户端配置如下:
<behaviors>
<endpointBehaviors>
<behavior name="ClientCertificateBehavior">
<clientCredentials>
<serviceCertificate> <authentication certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
这并不一定是你说想要的,看看这个
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2498938&SiteID=1
http://blogs.msdn.com/sajay/archive/2007/01/05/thoughts-on-basichttpbinding-security-and-ssl.aspx
abcdefu520 2008-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 possible_Y 的回复:]
不行
证书用来加密解密的,客户端证书里有公钥
[/Quote]

回楼上,我现在的.证书 .只是用来证明是不是真正的服务器端发过来的请求,证明这个服务器不是假的.而我不想应证客户端,难道这样不行吗???

请高手回答???
possible_Y 2008-04-19
  • 打赏
  • 举报
回复
不行
证书用来加密解密的,客户端证书里有公钥
kyle315 2008-04-18
  • 打赏
  • 举报
回复
不懂,帮顶。

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧