底层连接已关闭:无法为SSL/TLS安全通道建立信任关系

43.*_*4D. 2 .net vb.net security ssl

这是我的代码,我花了很长时间才写出我仍然是个笨蛋:

Imports System.Net
Imports System.Text
Imports System.IO

Public Class Form1

Dim logincookie As CookieContainer

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles      Button1.Click

    Dim postdata As String = "action=do_login&url=https%3A%2F%2Fforum.suprbay.org% 2F&quick_login=1&quick_username=USERNAME&quick_password=PASSWORD&submit=Login&quick_remember=yes"
    Dim tempcookies As New CookieContainer
    Dim encoding As New UTF8Encoding
    Dim bytedata As Byte() = encoding.GetBytes(postdata)
    Dim postreq As HttpWebRequest = DirectCast(WebRequest.Create("https://forum.suprbay.org/member.php"), HttpWebRequest)

    postreq.Method = "POST"
    postreq.KeepAlive = True
    postreq.CookieContainer = tempcookies
    postreq.ContentType = "application/x-www-forum-urlencoded"
    postreq.Referer = "https://forum.suprbay.org/member.php"
    postreq.UserAgent = "Mozilla/5.0 (Windows NT 6.2; rv:9.0.1) Gecko/20100101  Firefox/9.0.1"
    postreq.ContentLength = bytedata.Length

    Dim postreqstream As Stream = postreq.GetRequestStream()
    postreqstream.Write(bytedata, 0, bytedata.Length)
    postreqstream.Close()
    Dim postresponse As HttpWebResponse
    postresponse = DirectCast(postreq.GetResponse(), HttpWebResponse)

    tempcookies.Add(postresponse.Cookies)
    logincookie = tempcookies

    Dim postreqreader As New StreamReader(postresponse.GetResponseStream)
    Dim thepage As String = postreqreader.ReadToEnd

    RichTextBox1.Text = thepage

    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

当我运行它并单击按钮时,我收到以下错误:

"底层连接已关闭:无法为SSL/TLS安全通道建立信任关系."

它是PirateBay.Se的官方论坛,这是一个torrent网站,如果你在常规浏览器中访问它,你会得到关于信任证书的警告,所以这可能是我收到错误的原因,对吧?如何忽略信任证书和东西,以便我的应用程序可以工作?

Ste*_*n H 8

此行应忽略连接上的信任错误,在尝试连接之前执行此操作:

ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateRemoteCertificate
Run Code Online (Sandbox Code Playgroud)

您还需要在课堂上定义:

   Public Shared Function ValidateRemoteCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
        Return True
    End Function
Run Code Online (Sandbox Code Playgroud)

对不起,如果这不是VB.Net的完美翻译,我最初在C#中有这个.

编辑:

是的,这正是您收到此错误的原因,他们拥有的证书已过期.