Bugünlerde uygulama geliştirirken çoğumuz webservislere ulaşıyoruz. Fakat son zamanlarda güvenlik kaygılarınında artmasıyla eskiden hızlı olması için http üzerinde yayınlanan servisleri https geçirmekle uğraşıyoruz.Bunun yanında süresi dolan sertifikaların zamanında yenilenmemeside ayrı bir sorun olarak önemüzde duruyoru. Aslında çok kolay olması gereken bu işlem yapıldığında aşağıdaki hatayı alıyoruz. Bunun nedeni sunucuların doğru yapılandırılmaması ve .Net framework’ün kendisininde ince eleyip sık dokumasından dolayı servislerimizi https geçirip istemci tarafında da çağrımında sorun yaşıyoruz. Bunun asli sebebi ise .Net Framework’ünün http istemcisi tarafında sunucunun sertifikasını doğrulayamamasıdır.  Ama aslı sorunumuz bu sunucular üzerinde yapacak bir şeyimiz olmaması ama servislere ulaşmanın şart olmasıdır.

Peki Web isteklerimizi yapan HttpWebRequest’e sertifika hatalarını yok saymasını nasıl söyleriz? Endişe etmeyin çok zor bir işlem değil bunu ufak bir kod satırıyla halledebiliriz.

Yukarıdaki sınıfı kullanarak servis çağırımından önce TrustSertificate() metodunu çağırarak sertifika denetimini geçebiliriz. Dikkat ederseniz OnValidateCertificate() metodunda daima güven şeklinde şeklinde bir kurgu yaptık. Bu işlem yapılırken sertifika denetimlerini atladıgınızı unutmayın. Bundan dolayı bu kısmı özellikle dışarıdaki sunuculara veya sizin denetiminizde olmayan sunucularda kullanırken dikkatli olmanızı veya bu metodu kendi sisteminize göre uyarlamanızı tavsiye ediyorum. ServerCertificateValidationCallback için detaylı bilgiyi msdn üzerinden edinebilirsiniz.

Sürç-i lisan ettiysek affola

Kubilay

Kaynaklar
Microsoft

CEVAP VER

Please enter your comment!
Please enter your name here