none
基于证书验证的WCF服务部署到云服务器报错 RRS feed

  • 问题

  • 程序包括IIS托管的服务端和客户端,通过证书进行加密,服务端和客户端各自带有一个证书和私钥,在内网服务器上测试正常(测试时用的endpoint address和外网一样,只是修改hosts文件将网址指向内网IP),客户端能够调用服务端数据,但是服务端发布到阿里云之后客户端提示以下错误:

    ************** 异常文本 **************
    System.ServiceModel.Security.SecurityNegotiationException: 无法打开安全通道,因为与远程终结点的安全协商已失败。这可能是由于用于创建通道的 EndpointAddress 中不存在 EndpointIdentity 或错误指定了 EndpointIdentity。请确认由 EndpointAddress 指定或暗示的 EndpointIdentity 正确标识了远程终结点。 ---> System.ServiceModel.FaultException: 对安全令牌的请求具有无效或格式不正确的元素。
    在 System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(Message message, EndpointAddress target)
    在 System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(Message incomingMessage, SspiNegotiationTokenProviderState sspiState)
    --- 内部异常堆栈跟踪的结尾 ---

    云服务器是windows server 2016数据中心版,本地服务器是win10,浏览器可以正常浏览云端的svc文件,程序向云服务器和本地服务器发布都是ftp直接发布,证书也一样,客户端分别对两个服务器重新添加引用得到的identity节点下的certificate encodedValue值都是一样的。如果在云服务器上设置security mode="None"则双方通信正常。把客户端上传到云服务器,分别用网址、公网IP和内网IP标记endpoint address进行连接全都报上面的错误。客户端identity节点下只有一个引用时生成的certificate encodedValue,没有其他内容和dns节点。请教各位高手在云服务器上出现的问题到底是什么原因?


    • 已编辑 sonyglobal 2019年4月8日 7:27 补充
    2019年4月8日 7:24

答案

  • 你好,Sonyglobal,
    看起来是证书在服务器和客户端认证过程中发生了错误。你在服务器和客户端如何构建安全的? 认证模式是什么,信任链或者对等信任。证书是如何签发的?
    证书链信任通常特定于机器,这意味证书必须颁发给具体的机器域名(“颁发给”字段),而在上传的过程中,机器的域名已经发生了改变。证书的信任关系还存在于现在服务端和客户端机器吗?

    对等信任同样基于信任链,但是客户端证书是基于服务端证书的签发的。这意味着如果服务端证书不正确,信任关系就不存在。

    Best Regards

    Abraham

    • 已标记为答案 sonyglobal 2019年4月10日 2:06
    2019年4月9日 7:23

全部回复

  • 你好,Sonyglobal,
    看起来是证书在服务器和客户端认证过程中发生了错误。你在服务器和客户端如何构建安全的? 认证模式是什么,信任链或者对等信任。证书是如何签发的?
    证书链信任通常特定于机器,这意味证书必须颁发给具体的机器域名(“颁发给”字段),而在上传的过程中,机器的域名已经发生了改变。证书的信任关系还存在于现在服务端和客户端机器吗?

    对等信任同样基于信任链,但是客户端证书是基于服务端证书的签发的。这意味着如果服务端证书不正确,信任关系就不存在。

    Best Regards

    Abraham

    • 已标记为答案 sonyglobal 2019年4月10日 2:06
    2019年4月9日 7:23
  • 感谢Abraham的回答。

    问题已经得到解决,看来是证书链信任的问题,原始设置是PeerOrChainTrust,我们重新设置了服务器上的域,并根据服务器名称申请了新的客户端和服务端证书,现在已经可以正常通信了。

    再次对Abraham表示感谢~~

    2019年4月10日 0:39