I am trying to post over SSL with a certificate using the below code, but i get the error "The remote server returned an error: (403) Forbidden."
When i check my web server log, i see the error "Client did not provide certificate".
What is the proper way to initiate an HTTPS connection using a certificate ?
Thanks
When i check my web server log, i see the error "Client did not provide certificate".
What is the proper way to initiate an HTTPS connection using a certificate ?
Thanks
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim cert As New X509Certificate("D:\Certs\SSL.p12", "tester")
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf CertificateValidationCallBack)
Dim url As String = "https://myurl"
Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
Dim xmlString As String = ""
Dim f_read As New StreamReader("D:\Files\file.xml")
xmlString = f_read.ReadToEnd
f_read.Close()
Dim encoding As New ASCIIEncoding()
Dim bytesToWrite As Byte() = encoding.GetBytes(xmlString)
request.Method = "POST"
request.ContentLength = bytesToWrite.Length
request.ContentType = "text/xml; charset=utf-8"
request.Credentials = CredentialCache.DefaultNetworkCredentials
request.ClientCertificates.Add(cert)
Dim newStream As Stream = request.GetRequestStream()
newStream.Write(bytesToWrite, 0, bytesToWrite.Length)
newStream.Close()
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
TextBox1.Text = responseFromServer
Catch ex As Exception
TextBox1.Text = ex.Message
End Try
End Sub
Function CertificateValidationCallBack(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
Return True
End Function