Avatar billede mrbonus Novice
06. juli 2010 - 09:35 Der er 1 løsning

Skifte URL på webservice med SSL

Jeg har et program som kontakter en webservice, på samme site er der også et certifikat.
Jeg kan sagtens ændre URL så længe det er en http sti, men hvis jeg prøver at ændre URL til en https sti, så virker programmet ikke, jeg har dog midlertidigt omgået det ved at lave 2 forskellige webservice klasser, 1 som er bygget på wsdl filen fra http sitet, og en 1 bygget på wsdl filen fra https sitet.

Dette er dog ikke en holdbar løsning, for hvis jeg skal tilgå en anden https url, bliver jeg nødt til at have en tredje webservice klasse.

Jeg går ud fra at webservice klassen på en eller anden måde er knyttet op på certifikatets public key, men jeg kan simpelthen ikke gennemskue hvor jeg kan ændre denne public key på min webservice klasse.

Nogen der ved hvordan man med kun 1 webservice klasse, kan tilgå både http og https på multiple sites?

(webservice klasse: jeg har tilføjet en webservice reference, så visual studio bygger den automatiskt for mig)
Avatar billede mrbonus Novice
06. juli 2010 - 13:56 #1
Fandt min løsning her:
http://weblogs.asp.net/jan/archive/2003/12/04/41154.aspx

Jeg omgik måden hvorpå den validerer certifikatet, og for mig er det fint at jeg validerer på addressen, da det er mit eget website, og mig der styrer certifikatet der, så jeg ved at det altid er et rigtigt certifikat, så længe det er de rigtige webservice addresser :)

Smider lige det meste af koden nedenfor, til intereserede.

'handler tilføjes, som så overstyrer valideringen, skal kun køres 1 gang per applikations start
System.Net.ServicePointManager.CertificatePolicy = New TrustAllCertificatePolicy()

'Ny klasse som laver valideringen
Imports System.Net
Imports System.Security.Cryptography.X509Certificates

Public Class TrustAllCertificatePolicy
Implements ICertificatePolicy

Public Sub New()
End Sub

Public Function CheckValidationResult(ByVal sp As ServicePoint, ByVal cert As X509Certificate, ByVal req As WebRequest, ByVal problem As Integer) As Boolean Implements ICertificatePolicy.CheckValidationResult
    If sp.Address.AbsoluteUri = "https://www.mysite.com/myws/ws.asmx" Then
        Return True
    End If
    Return False
End Function
End Class
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester