Microsoft on tehnyt .netissään monta asiaa oikein, mutta jotkut tuntuvat edelleen aavistuksen hankalilta. Tähän kirjoitukseen innoitti tilanne, jossa haluat sallia itse allekirjoitetun sertifikaatin käytön omasta koodista avattavassa HTTPS-yhteydessä. Ohessa ratkaisu.
Itse tehdyt sertifikaatit eivät tietenkään pohjaudu perimmiltään mihinkään luotettavan tahon (kuten Verisignin) allekirjoittamaan sertifikaattiin, joten eihän moisiin passaa oletusarvoisesti luottaa: "Could not establish trust relationship with remote server." Toisaalta harvalla meistä on julkisesti luotettavia varmenteita kaikille testipalvelimillemme.
Vastaus on sinänsä helppo; ICertificatePolicy-rajapinnan kautta on vaivatonta määritellä sellainen politiikka, että mikä tahansa sertifikaatti kelpaa. Tämä ei välttämättä ole kovinkaan turvallista, mutta varsinkin testikäytössä funktionaalisuus yleensä ratkaisee. Seuraavalla pääsee vauhtiin:
using System.Net; using System.Security.Cryptography.X509Certificates; internal class TotaalinenLuottaja : ICertificatePolicy { public bool CheckValidationResult( ServicePoint sp, X509Certificate certificate, WebRequest request, int problem) { return true; } } // ... ja toisaalla koodissa, ennen https-hakua ... ServicePointManager.CertificatePolicy = new TotaalinenLuottaja();Posted by Jouni Heikniemi at 07.02.04 19:07