Https 没有Fiddler证书,应用程序无法运行

Https 没有Fiddler证书,应用程序无法运行,https,certificate,fiddler,Https,Certificate,Fiddler,这似乎是一个非常古老的问题,然而,所有上述解决方案都不适用于我。我向一个客户端发出请求,并收到一个HTTPS响应,我在早期使用fiddler捕获该响应,但是现在我的应用程序在没有fiddler证书的情况下无法工作。当我在fiddler中选择descrypt HTTPS流量时,即使我从fiddler中删除HTTPS捕获选项并删除fiddler证书,应用程序也会工作,否则不会工作 我也试着把fiddler全部除掉,但这也不能解决问题。到目前为止,我已经没有选择了。这是我的密码 Dim cer

这似乎是一个非常古老的问题,然而,所有上述解决方案都不适用于我。我向一个客户端发出请求,并收到一个HTTPS响应,我在早期使用fiddler捕获该响应,但是现在我的应用程序在没有fiddler证书的情况下无法工作。当我在fiddler中选择descrypt HTTPS流量时,即使我从fiddler中删除HTTPS捕获选项并删除fiddler证书,应用程序也会工作,否则不会工作

我也试着把fiddler全部除掉,但这也不能解决问题。到目前为止,我已经没有选择了。这是我的密码

    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异常,试图看看问题是什么,但就是找不到。希望有一种方法可以从某种调试信息中看出这一点。我已经按照你的建议对我的.近距离通话进行了更改。谢谢