WCF自定义验证,老是报错证书错误,说证书无效,什么的!!! WCF自定义验证,老是报错证书错误,说证书无效,什么的!!! 请问哪位有能正常运行的wcf的demo,给小弟参照一下!!! 请高手帮帮忙啊~~~wcf 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我以前上传的 要一分http://download.csdn.net/detail/jiaoshiyao/5987049 @jiaoshiyao 我没分啊~能给我发一份吗?[email protected] @jiaoshiyao 这个代码我下载了,没有用户验证啊~ 还不如去微软官网去下载完整示例,浪费了1分啊。using (ServiceHost serviceHost = new ServiceHost(typeof(Server))){ serviceHost.Credentials.ServiceCertificate.Certificate = new X509Certificate2(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "我的证书.pfx"), "密码"); serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; serviceHost.Open(); Console.WriteLine("服务器成功启动!");其它配置写在了配置文件里面了,这里之所以在代码里面写,目的就是为了可以使用证书文件,灵活调用证书,如果你想调用系统已经存在的证书而不是证书文件,可以这么写:serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=SecGateAdmin, C=CN");最后一个参数是证书名称,按名称查找证书。最后要注意的是,证书必须包含私钥,否则无法使用。客户端证书可以不需要,建议客户端证书验证模式设置为None,加密只需要服务器证书就可以了。 你能不能把问题描述详细些,使用的协议是什么,WCF的协议有很多种,不同协议的配置并不完全相同。还有你目前写到什么程度了,相关启动代码和配置文件都贴出来啊,不然要帮你也很麻烦,还得猜问题。netTcpBinding举例: <netTcpBinding> <binding name="TcpBinding" transferMode="Streamed" sendTimeout="00:10:00" receiveTimeout="00:10:00" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> <security mode="Transport"> <transport clientCredentialType="None"/> </security> </binding> </netTcpBinding> 我使用的是wsHttp协议,设置基本都一样~我看看怎么贴代码上来看看 在使用wsHttp的时候,使用证书的链接必须是https开头,你却用http开头,怎么能不出错?其二,ssl证书验证是很严格的,必须有有效的根证书(域名和有效期都必须通过),否则就会报错,为了避免证书验证失败,服务端一般都会添加serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;而客户端都会有ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(allowCert); private static bool allowCert(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { return true; } user32.dll中findtext怎么使用 求解答。。! c# 控制台程序 水晶报表分组汇总 c# 如何向数据库表中插入数据 ReadLine()将一文本文件拆分打包存 求助!listview用BeginEdit()编辑完编辑框依旧还在 一个WPF里的奇葩Buge 在循环中想控制循环中每一次运行停留10秒,怎么控制 vs.net 的bug吗? c# Winform有能支持IE,Firefox,Chrome,Safari浏览器的控件吗? 怎么把已经存在的xsd文件加成数据源,使用c#
http://download.csdn.net/detail/jiaoshiyao/5987049
我没分啊~
能给我发一份吗?
[email protected]
这个代码我下载了,没有用户验证啊~
{
serviceHost.Credentials.ServiceCertificate.Certificate = new X509Certificate2(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "我的证书.pfx"), "密码");
serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
serviceHost.Open();
Console.WriteLine("服务器成功启动!");其它配置写在了配置文件里面了,这里之所以在代码里面写,目的就是为了可以使用证书文件,灵活调用证书,如果你想调用系统已经存在的证书而不是证书文件,可以这么写:
serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser,
StoreName.My,
X509FindType.FindBySubjectDistinguishedName,
"CN=SecGateAdmin, C=CN");
最后一个参数是证书名称,按名称查找证书。最后要注意的是,证书必须包含私钥,否则无法使用。客户端证书可以不需要,建议客户端证书验证模式设置为None,加密只需要服务器证书就可以了。
netTcpBinding举例: <netTcpBinding>
<binding name="TcpBinding" transferMode="Streamed" sendTimeout="00:10:00" receiveTimeout="00:10:00" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</netTcpBinding>
设置基本都一样~
我看看怎么贴代码上来看看
其二,ssl证书验证是很严格的,必须有有效的根证书(域名和有效期都必须通过),否则就会报错,为了避免证书验证失败,服务端一般都会添加serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
而客户端都会有
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(allowCert); private static bool allowCert(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
return true;
}