ilcava.it power by WordPress
Aprire una pagina WEB controllando il certificato
Mi è capitato di dover scaricare dei file da un sito WEB, verificando che la fonte sia corretta. Essendo per uso interno aziendale, ho pensato di creare un certificato auto-firmato e controllare se la firma è corretta.
Cercando in rete sono riuscito a fare questo codice in VB.NET:
Public Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As X509Certificate _
, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
'Controlla che il certificato sia esattamente quello riportato come risorsa del programma "cert"
If certificate.GetRawCertDataString() = New X509Certificate(My.Resources.cert).GetRawCertDataString() Then
Return True
End If
Return False
End Function
Private Function fncRequest(ByVal strURL As String) As String
'Connessiona al server per il download dei dati...
Dim request As HttpWebRequest
Dim response As HttpWebResponse
Dim encoding As New System.Text.ASCIIEncoding()
'Seguenza con controllo errori
Try
'Crea l'oggeto per la richiesta
request = CType(WebRequest.Create(strURL), HttpWebRequest)
'Passa oggetto per verifica la validità del certificato
ServicePointManager.ServerCertificateValidationCallback = _
New Net.Security.RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
'Apre la connessione al server
response = CType(request.GetResponse(), HttpWebResponse)
If response.StatusCode = HttpStatusCode.OK Then
Dim sBuild As System.Text.StringBuilder = New System.Text.StringBuilder
' Lancia la richiesta HTTP, la pagina desiderata
Dim ReceiveStream As Stream = response.GetResponseStream()
Dim read(256) As [Byte]
' Legge la risposta tramite un buffer di 256 byte
Dim count As Integer = ReceiveStream.Read(read, 0, 256)
'Ricezione del file
While count > 0
sBuild.Append(encoding.GetString(read, 0, count))
'Legge i prossimi dati
count = ReceiveStream.Read(read, 0, 256)
End While
' Chiude la risorsa usata per ricevere i dati della pagina
ReceiveStream.Close()
' Chiude la risorsa usata per archiviare la risposta
response.Close()
'Ritorna la risposta ottenuta
Return sBuild.ToString()
Else
'Nessuna risposta
Return Nothing
End If
Catch exc As Exception
'Errore nella procedura, indirizzo non valido o certificato non accettato
Return Nothing
End Try
End Function
