首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iis中本地主机上无效的WCF服务自签名证书

在iis中本地主机上无效的WCF服务自签名证书
EN

Stack Overflow用户
提问于 2017-06-01 16:05:41
回答 1查看 1.1K关注 0票数 0

这是我第一次创建WCF服务。我需要使用HTTPS,因为我将使用MembershipBinding。到目前为止,我所采取的步骤是:

  1. 使用makecert.exe应用程序创建了一个证书颁发机构--由此我创建了一个服务器证书和一个客户机证书。
  2. 将证书颁发机构添加到Microsoft管理控制台中的受信任根证书颁发机构。
  3. 将客户端和服务器证书添加到Microsoft管理控制台中的个人证书中。
  4. 使用服务器证书为IIS中的服务创建https绑定。
  5. 为服务器证书上的应用程序池设置适当的权限。
  6. 在serviceBehaviours节点中定义web.config中的服务证书。

我现在正在使用WCF客户端测试该服务,但我得到了以下消息:

错误:如果这是您可以访问的Windows (R)通信基础服务,则无法从https://localhost:444/Service.svc获取元数据,请检查是否已启用指定地址的元数据发布。有关启用元数据发布的帮助,请参考http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange错误URI:https://localhost:444/Service.svc元数据包含无法解析的引用的MSDN文档:“https://localhost:444/Service.svc”。无法通过授权“localhost:444”为SSL/TLS安全信道建立信任关系。基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。远程证书无效,根据验证procedure.HTTP GET错误URI:https://localhost:444/Service.svc下载'https://localhost:444/Service.svc‘时出错。基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。根据验证过程,远程证书无效。

错误表明存在信任证书的问题,但我信任用于创建证书的证书颁发机构,因此我不知道如何解决它。当我使用http时,这项服务运行良好。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-02 11:23:25

由于您的证书是自签名的,您需要在客户端调用中添加一个黑客:

代码语言:javascript
复制
using (MyWCFServiceClient client = new MyWCFServiceClient())
{

#if DEBUG
    ServicePointManager.ServerCertificateValidationCallback = TrustAllCertificatesCallback;
#endif

    client.MyCall();
}

以及TrustAllCertificatesCallback的定义:

代码语言:javascript
复制
internal static bool TrustAllCertificatesCallback(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors)
{
    bool isValid = true;
    // TODO logic to check your self-signed certifiacte

    return isValid;
}

应该在生产环境中禁用TrustAllCertificatesCallback回调。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44312384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档