HTTP Public Key Pinning (HPKP), sitelerin tarayıcıya "bu alan adı için yalnızca şu açık anahtarları kabul et" demesini sağlayan bir başlıktı. Sahte sertifikalara karşı koruma vaat etse de ciddi operasyonel riskleri nedeniyle tarayıcılardan kaldırıldı ve bugün kullanılmamalıdır.
HPKP nasıl çalışırdı?
Sunucu, Public-Key-Pins başlığıyla en az bir yedek dahil birkaç SPKI karması ve bir max-age değeri gönderirdi. Tarayıcı bu bilgiyi süre boyunca saklar, sonraki bağlantılarda sunulan zincir içinde pin'lerden biri yoksa bağlantıyı reddederdi.
Public-Key-Pins: pin-sha256="BASE64_ANA=="; pin-sha256="BASE64_YEDEK=="; max-age=5184000
Neden sorunluydu?
- Kendini kilitleme: Pinlenen anahtarı kaybeden veya yedek pin eklemeyi unutan site, max-age dolana kadar ziyaretçilerine erişilemez hale gelebilirdi.
- Kötüye kullanım (HPKP suicide / ransom): Bir saldırgan sunucuyu ele geçirip kendi pin'lerini yayınlayarak siteyi uzun süre erişilemez kılabilirdi.
- Karmaşık işletim: CA değişikliği, anahtar rotasyonu ve yük dengeleyiciler pin yönetimini zorlaştırıyordu.
- Düşük benimseme: Hataların bedeli, faydanın yanında çok yüksek görüldüğü için kullanım sınırlı kaldı.
Bugün ne yapmalı?
- Başlığı kaldırın: Eski yapılandırmalarda
Public-Key-Pinsvarsa silin. Modern tarayıcılar zaten yok sayar. - CAA kaydı ekleyin: DNS'te hangi CA'ların sertifika düzenleyebileceğini kısıtlayın.
Kendi CA'nıza göre değeri uyarlayın.ornek.com. IN CAA 0 issue "letsencrypt.org" - Sertifika Şeffaflığı (CT) izleyin: Alan adınız için beklenmedik düzenlenen sertifikaları CT log izleme servisleriyle takip edin.
- HSTS kullanın:
Strict-Transport-Securitybaşlığıyla HTTPS'i zorunlu kılın. - Uygulamalarda pinning: Kontrol ettiğiniz mobil istemcilerde pinning yedek pin ile kullanılabilir.
HSTS ve diğer başlıkların doğru kurulup kurulmadığını SSL Checker ile görebilir, sertifika seçiminde SSL seçim rehberinden yararlanabilirsiniz.
Özetle HPKP tarihe karıştı; aynı hedefe CAA, CT izleme ve HSTS ile çok daha güvenli biçimde ulaşabilirsiniz.