CodeBlanks Logo Icon CodeBlanks

Certificate pinning

Certificate pinning öğrenirsin.

Certificate pinning nedir?

Certificate pinning, uygulamanın yalnızca belirli SSL sertifikalarına güvenmesidir. Normalde cihazın sertifika deposuna güvenilir; ama bu, man-in-the-middle (MITM) saldırılarına açıktır. Pinning ile uygulama yalnızca senin sunucunun sertifikasını kabul eder.

React Native'de TrustKit (iOS) ve Network Security Config (Android) ile yapılır. Bir sertifika parmak izi (SHA-256) koda gömülür. Sunucu bu parmak izini taşıyorsa istek geçer; değilse reddedilir. Bu, birinin araya girip trafiği dinlemesini engeller. Pin güncellenmezse sertifika yenilendiğinde uygulama çalışmaz; bu yüzden yedek pin de vermek iyi bir uygulamadır.

network security config

Android'de pinning network_security_config.xml ile yapılır. Bu dosya bir domain ve bir ya da daha fazla pin tanımlar. Pin, sertifikanın SHA-256 parmak izidir.

Örnek iskelet: <domain-config><domain includeSubdomains="true">api.example.com</domain><pin-set><pin digest="SHA-256">...</pin></pin-set></domain-config>. includeSubdomains alt domainleri de kapsar. pin-set içinde birden fazla pin verilirse yedek pin olarak kullanılır. Bu dosya AndroidManifest.xml'de android:networkSecurityConfig özniteliğiyle bağlanır.

Uygulama Pin yapılandırması yaz

Bir network_security_config.xml iskeleti yaz. Kök <network-security-config> etiketi olsun. İçinde bir <domain-config>, onun içinde bir <pin-set> ve bir <pin> etiketi bulunsun. <pin> etiketi digest="SHA-256" özniteliği taşısın.

Başlangıç kodu

App.js
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <!-- domain-config, pin-set ve pin etiketlerini buraya ekle -->
</network-security-config>

Örnek çözüm

App.js
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">api.example.com</domain>
    <pin-set>
      <pin digest="SHA-256">abcdef1234567890</pin>
    </pin-set>
  </domain-config>
</network-security-config>

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Pinning algoritması

Soru
"pinningAlgorithm": "____"
Cevap
"pinningAlgorithm": "sha256"

Açıklama: sha256 pinning için yaygın algoritmadır.

2 Certificate pinning neyi engeller?

App.js
MITM attack
  • Man-in-the-middle saldırısı Doğru cevap
  • Bellek sızıntısı
  • Pil tüketimi
  • Ekran görüntüsü

Açıklama: Pinning araya giren dinleyiciyi engeller.

3 Parçayı rolüne eşle

Kavram Anlamı
pin-set Pin kümesi
SHA-256 Parmak izi
domain-config Domain bölümü
TrustKit iOS pinning

Uzman bölümündeki tüm dersler