OkHttp'de Sertifika Pinleme (Certificate Pinning) Nasıl Yapılır?

0 Ответы 2 Просмотры
·
Участники
Автор темы #1



OkHttp, modern Android ve Java uygulamalarında HTTP(S) bağlantıları kurmak için en çok tercih edilen kütüphanelerden biridir. Güvenlik açısından, özellikle hassas verilerin iletiminde, sertifika pinleme (certificate pinning) önemli bir rol oynar. Bu yöntem, client tarafında belirli bir sunucuya ait SSL sertifikasının veya sertifika zincirinin önceden belirlenmiş bir değere göre doğrulanmasını sağlar. Bu sayede, man-in-the-middle saldırılarına karşı ekstra koruma elde edilir.

Pinleme işlemi, genellikle üç farklı seviyede yapılabilir:

  1. SPKI pinleri (Subject Public Key Info): Sertifikanın anahtar halkasının hash değeri. Günümüzde en çok tercih edilendir çünkü sertifika değiştiğinde yeni sertifikaya uyum sağlar.
  2. X.509 sertifika pinleri: Sertifikanın kendisinin hash değeri.
  3. Düşük seviyeli SSL pinleri: Genellikle daha az kullanılır.


OkHttp'de sertifika pinleme, CertificatePinner sınıfı kullanılarak yapılandırılır. Aşağıda temel bir örnek yer almakta:

КОД
1234567CertificatePinner certificatePinner = new CertificatePinner.Builder()
    .add("example.com", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
    .build();

OkHttpClient client = new OkHttpClient.Builder()
    .certificatePinner(certificatePinner)
    .build();


Burada dikkat edilmesi gereken noktalar:

  • Alan adı (domain): add() metodunda kullanılan alan adı, sertifikanın geçerli olduğu tam alan adını veya alt alan adlarını belirtir.
  • Pin değeri: sha256/ ile başlayan kısımdır. Bu hash değeri, sertifikanın veya onun anahtar halkasının SHA-256 değeri olmalıdır. Değeri oluşturmak için, ilgili sertifikanın veya anahtarın hash’ini hesaplamanız gerekir.


Pin değeri oluşturmak için şu adımları izleyebilirsiniz:

  1. Sertifika veya anahtarın PEM veya DER formatını alın.
  2. OpenSSL komut satırını kullanarak hash'i hesaplayın:


КОД
1openssl x509 -in your_cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -binary | openssl enc -base64


  1. Çıkan değeri sha256/ ile birlikte kullanın.


Önemli: Sertifika veya anahtar güncellemeleri sırasında pinleri de güncellemek gerekir. Ayrıca, pinleri çok katı yapmak, sertifika yenilemelerinde sorun çıkarmasına neden olabilir. Bu nedenle, genellikle birkaç pin eklemek ve planlı güncellemeler yapmak en doğru yaklaşımdır.

Sonuç olarak, OkHttp'de sertifika pinleme, uygulamanızın güvenliğini artırmak için kritik bir adımdır ve doğru yapılandırıldığında, güvenlik açığı oluşturan sertifika takibini büyük ölçüde sınırlar. Sertifika güncellemeleri ve pin yönetimini düzgün planlamak, uzun vadeli güvenlik ve stabilite açısından hayati önem taşır.

Чтобы ответить, необходимо войти в систему.

0 цитат выбрано