SSL Pinning Nedir ve Nasıl Uygulanır?
Günümüzde internet güvenliği, kullanıcılara güvenli bir deneyim sunmak için hayati önem taşımaktadır. Bu bağlamda, Secure Sockets Layer (SSL) protokolü, veri iletişimini şifreleyerek gizlilik ve bütünlük sağlamaktadır. Fakat, SSL sertifikalarının kullanımı tek başına yeterli olmayabilir ve daha ileri bir güvenlik önlemi olan SSL pinning devreye girmektedir.
SSL Pinning Nedir?
SSL pinning, bir uygulamanın belirli bir sunucuya, özellikle de onun SSL sertifikasına güvenmesini sağlamak amacıyla kullanılan bir tekniktir. Bu, uygulama ile sunucu arasındaki ‘kişilere-kuşkulanmadan’ güven sağlar. Esasen, uygulama yalnızca belirli bir sertifikayla sunucuya bağlanarak “middle man” (ara adam) saldırılarını önler.
SSL Pinning Nasıl Çalışır?
SSL pinning, uygulamanın sunucuya güvenli bir şekilde bağlandığını garanti eder. Bu, uygulama içerisindeki belirli bir sertifikanın veya genel anahtarın (public key) kodlanması yoluyla gerçekleştirilir. Uygulama her bağlantı isteğinde, sunucudan alınan sertifikanın kodlanan sertifikayla eşleşip eşleşmediğini kontrol eder. Eşleşme sağlanmazsa, bağlantı sonlandırılır.
SSL Pinning Türleri
1. Public Key Pinning (Genel Anahtar Sabitleme): Bu yöntem, uygulamada yalnızca sertifikanın genel anahtarının saklanması şeklindedir. Anahtar sunucudan alınan anahtarla eşleşirse, bağlantı kabul edilir.
2. Certificate Pinning (Sertifika Sabitleme): Bu yöntemde, uygulama doğrudan belirli bir SSL sertifikasını sabitler. Eğer sunucunun sunduğu sertifika, sabitlenmiş olanla aynı değilse, bağlantı reddedilir.
SSL Pinning Nasıl Uygulanır?
SSL pinning'''in uygulaması, kullanılan platforma göre değişiklik gösterebilir. İşte Android ve iOS uygulamaları için genel bir uygulama yolları:
Android için SSL Pinning Uygulaması
Android’te SSL pinning genellikle programlamada OkHttp veya Retrofit gibi kütüphanelerle gerçekleştirilir:
“`java
OkHttpClient client = new OkHttpClient.Builder()
.certificatePinner(new CertificatePinner.Builder()
.add(“www.example.com”, “sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”)
.build())
.build();
“`
iOS için SSL Pinning Uygulaması
iOS ortamında URLSession yapılandırması üzerinden gerçekleştirilir:
“`swift
let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)
extension ViewController: URLSessionDelegate {
func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
if let serverTrust = challenge.protectionSpace.serverTrust {
let credential = URLCredential(trust: serverTrust)
completionHandler(.useCredential, credential)
}
}
}
“`
SSL Pinning ve Sunucu Seçimi
SSL pinning kullanımı sırasında dikkat edilmesi gereken en önemli konulardan biri doğru sunucu altyapısının seçilmesidir. Sunucu altyapınızın güvenliğini sağlamak, SSL pinning ile başlamaz; aslında sunucu seçiminde güvenlik mimariniz için temel oluşturur. Güvenilir ve yüksek performanslı sanal sunucular için sanal sunucu servislerinden yararlanabilirsiniz.
SSL pinning kavramı, internet dünyasında veri bütünlüğü ve güvenliğini önemli ölçüde artırır. Doğru uygulandığında, kullanıcı bilgilerinizin herhangi bir saldırıya karşı güvende kalmasını sağlar. Uygulamalarınızın güvenlik seviyesini en üst düzeye çıkarmak için SSL pinning'''i projelerinize dahil etmeyi değerlendirin.