Forespørselen ble avbrutt: Kunne ikke opprette SSL/TLS sikker kanal

Vi kan ikke koble til en HTTPS-server ved hjelp av WebRequest på grunn av denne feilmeldingen:

Forespørselen ble avbrutt: Kunne ikke opprette sikker SSL/TLS-kanal".

Vi vet at serveren ikke har et gyldig HTTPS-sertifikat med banen som brukes, men for å omgå dette problemet bruker vi følgende kode som vi har hentet fra et annet StackOverflow-innlegg:

private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}

private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

Problemet er at serveren aldri validerer sertifikatet og mislykkes med feilen ovenfor. Har noen noen ide om hva jeg skal gjøre?


Jeg bør nevne at en kollega og jeg utførte tester for noen uker siden, og det fungerte bra med noe som ligner på det jeg skrev ovenfor. Den eneste "store forskjellen" vi har funnet er at jeg bruker Windows 7 og han brukte Windows XP. Forandrer det noe?

Problemet du har er at aspNet-brukeren ikke har tilgang til sertifikatet. Du må gi tilgang ved hjelp av winhttpcertcfg.exe.

Et eksempel på hvordan du setter opp dette er på: http://support.microsoft.com/kb/901183

Under trinn 2 i mer informasjon

EDIT: I nyere versjoner av IIS er denne funksjonen innebygd i sertifikatadministrasjonsverktøyet - og kan nås ved å høyreklikke på sertifikatet og bruke alternativet for å administrere private nøkler. Mer informasjon her: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791#132791

Kommentarer (4)

Feilen er generisk, og det er mange grunner til at SSL/TLS-forhandlingen kan mislykkes. Den vanligste er et ugyldig eller utløpt serversertifikat, og du tok vare på det ved å oppgi din egen serversertifikatvalideringskrok, men det er ikke nødvendigvis den eneste grunnen. Serveren kan kreve gjensidig autentisering, den kan være konfigurert med en chifferpakke som ikke støttes av klienten din, den kan ha et for stort tidsavvik til at håndtrykket lykkes og mange flere grunner.

Den beste løsningen er å bruke SChannel feilsøkingsverktøyene. SChannel er SSPI-leverandøren som er ansvarlig for SSL og TLS, og klienten din vil bruke den til håndtrykket. Ta en titt på TLS/SSL-verktøy og innstillinger.

Se også How to enable Schannel event logging.

Kommentarer (2)

Du kan prøve å installere et demo-sertifikat (noen ssl-leverandører tilbyr dem gratis i en måned) for å være sikker på om problemet er relatert til sertifikatets gyldighet eller ikke.

Kommentarer (3)