Https 没有Fiddler证书,应用程序无法运行
这似乎是一个非常古老的问题,然而,所有上述解决方案都不适用于我。我向一个客户端发出请求,并收到一个HTTPS响应,我在早期使用fiddler捕获该响应,但是现在我的应用程序在没有fiddler证书的情况下无法工作。当我在fiddler中选择descrypt HTTPS流量时,即使我从fiddler中删除HTTPS捕获选项并删除fiddler证书,应用程序也会工作,否则不会工作 我也试着把fiddler全部除掉,但这也不能解决问题。到目前为止,我已经没有选择了。这是我的密码Https 没有Fiddler证书,应用程序无法运行,https,certificate,fiddler,Https,Certificate,Fiddler,这似乎是一个非常古老的问题,然而,所有上述解决方案都不适用于我。我向一个客户端发出请求,并收到一个HTTPS响应,我在早期使用fiddler捕获该响应,但是现在我的应用程序在没有fiddler证书的情况下无法工作。当我在fiddler中选择descrypt HTTPS流量时,即使我从fiddler中删除HTTPS捕获选项并删除fiddler证书,应用程序也会工作,否则不会工作 我也试着把fiddler全部除掉,但这也不能解决问题。到目前为止,我已经没有选择了。这是我的密码 Dim cer
Dim cert As X509Certificate = X509Certificate.CreateFromCertFile("Cert Location")
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf OnCertificateValidation)
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = CType(HttpWebRequest.Create(WebURL), HttpWebRequest)
request.Method = "POST"
Dim requestDataByte() As Byte = Encoding.UTF8.GetBytes(CreateRequestXML)
request.ContentLength = requestDataByte.Length
Dim requestdata As Stream = request.GetRequestStream()
requestdata.Write(requestDataByte, 0, requestDataByte.Length)
requestdata.Close()
request.GetRequestStream.Close()
request.ClientCertificates.Add(cert)
request.KeepAlive = False
Dim response As HttpWebResponse = CType(request.GetResponse, HttpWebResponse)
If response.StatusCode > 400 Then
MsgBox("Error:" + response.StatusDescription + vbCrLf + response.StatusCode)
End If
Dim response_stream As Stream = response.GetResponseStream
response_stream.Close()
response.Close()
Dim reader As StreamReader = New StreamReader(response_stream)
_response = reader.ReadToEnd
reader.Close()
我一直收到500内部服务器错误。
编辑:我没有正确关闭响应连接,但是我很久以前就修改了代码的那部分。那个修改不应该解决我的问题吗
我已经根据网上的帖子修改了代码。但仍然无法解决问题 小提琴手的证书不太可能与此有关。更可能的解释是,代码向服务器提供客户端证书的方式存在问题;当Fiddler处于中间状态时,该问题得到补救,因为小提琴手不能将应用程序发送的客户端证书传递给服务器。
那么,退一步,当您运行Fiddler时,您的磁盘上是否有%AppData%\Documents\Fiddler\ClientCertificate.cer文件?如果是这样,Fiddler将向服务器发送客户端证书。如果没有,那么您的服务器根本无法获得客户端证书。上述问题的解决方案是在定义请求对象之后使用ClientCertificates.add方法。并通过调用适当的.close方法正确关闭响应流 我现在也在关闭这条小溪。但是,没有任何改善。我还尝试在另一个系统中执行该程序,但仍然存在相同的问题。我真的希望得到一些帮助来解决这个问题。请考虑将调用移动到Cclipse证书。添加到DIM请求行之后。你应该删除call request.GetRequestStream.Close,因为你在调用requestData.Close时已经关闭了该流。我昨天忘记更新我的问题了。事实上,我完全按照你的建议做了,现在一切都正常了。我没有注意到我的WebRequest不正确,因为Fiddler正在修复它。我尝试了web异常,试图看看问题是什么,但就是找不到。希望有一种方法可以从某种调试信息中看出这一点。我已经按照你的建议对我的.近距离通话进行了更改。谢谢