【发布时间】:2015-06-12 12:31:42
【问题描述】:
我需要使用客户端证书调用服务器 Web 服务。他们为我提供了一个 .crt 文件。我在 WindowsServer2008 IIS7 中托管我的项目。
我从右键单击属性安装 .crt,因为我无法通过完成证书请求将证书添加到服务器证书。我得到了错误:
CertEnroll::CX509Enrollment::p_InstallResponse: ANSI bad tag value met.
我用谷歌搜索并没有发现如何安装 .crt 客户端证书。还尝试在第 4 步解释 here 进行安装。
当我这样打电话时
string certPath = Server.MapPath("../certificate/iot01.servername.crt");
X509Certificate2 cert = new X509Certificate2(certPath);
ws.ClientCertificates.Add(cert);
res = ws.methodName(params);
我得到了错误: System.IO.IOException:由于意外的数据包格式,握手失败。在 System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState。 CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResultlazyResult) 在 System.Net.TlsStream.CallProcessAuthentication(Object state) 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback 回调, 对象状态, Boolean preserveSy ncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32大小)在 System.Net.PooledStream.Write(字节 [] 缓冲区,Int32 偏移量,Int32 大小)在 System.Net.ConnectStream.WriteHeaders(布尔异步) 在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) 在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[ ] 参数)在.....
这是否与我的证书安装和调用有关。谁能指出我哪里出错了。
【问题讨论】:
标签: web-services asp.net-mvc-4 client-certificates