LetsEncrypt ile Genel Anahtar Pimlerini kullanabilir miyim?


10

LetsEncrypt sertifikasını 30 günde bir yenilemek üzere bir cronjob ayarladığımda Genel Anahtar Pimlerini ayarlayabilir miyim?

Sertifika yenilenirse, Ortak Anahtar Pimi de yenilenir değil mi?

Yanıtlar:


12

Başlamak için dikkat etmeniz gereken bazı kelimeler:

  • HPKP'yi uygulamayı planlıyorsanız ne yaptığınızı bilin.
  • Doğru yapmazsanız veya kontrolünüz altında olmayan "kötü şeyler olursa", alan adınızı kullanılamaz hale getirebilirsiniz.
  • Kurulumunuzu bu kadar önemli olmayan bir alan adıyla veya örneğin on saniye gibi çok kısa bir önbellek süresiyle test ettiğinizden emin olun.
  • Hangi cerleri sabitlemek istediğinizi düşünün: Kök, orta, yaprak ...
  • Başka bir (yedekleme) sertifika yetkilisini sabitlemenin anlamlı olup olmadığını, ara sertifikaları ve yaprak sertifikanızı düşünün.
  • Özür dilemekten daha güvenli: İki tane başka bir yedek CA / sertifika sabitlemenin mantıklı olup olmadığını düşünün.
  • Bu noktalar ve sorular size "yeni" geliyorsa: Bunu uygulamadan önce HPKP'nin ne hakkında olduğunu ve ortak tuzakları ve uyarıları okuyun .

LetsEncrypt ile Genel Anahtar Pimlerini kullanabilir miyim?

  • Evet.

Sertifika yenilenirse, Ortak Anahtar Pimi de yenilenir değil mi?

  • Bu, hangi sertifikaya başvurduğunuza ve hangi sertifikaları sabitlediğinize bağlıdır.

9

Gf_'nin söylediği her şeyi yankılardı.

Ancak, soruyu cevaplamak için evet yapabilirsiniz.

Varsayılan olarak Şifreyi Girelim, anahtarı ve sertifikayı yenileme sırasında yeniden oluşturur. Bu, ara değişikliklerde ( Mart 2016'da olduğu gibi) yapmanız gereken yaprağa sabitlemek istiyorsanız HPKP'yi uygulamayı zorlaştırır .

Hâlâ HPKP yapmak istiyorsanız, bunun etrafında birkaç seçeneğiniz vardır:

  1. Yaprak anahtarının değişmemesi için her seferinde CSR'yi oluşturan standart istemci yerine kendi sabit CSR'nizi kullanın. Bu blog gönderisi , yazarın HPKP kullandığı için bunun nasıl yapılacağını açıklamaktadır.
  2. Kısa bir HPKP sona erme süresi kullanın ve bu son kullanma süresi içinde sertifikayı değiştirmeden önce hem eski hem de yeni anahtarlara sahip olmak için politikayı değiştirin ve yeni politikanın herhangi bir ziyaretçi tarafından toplanması için yeterli zamana sahip olun.
  3. Yaprak veya sertifika yerine Let's Encrypt kökünü sabitleyin.

1
İyi eklemeler, +1.
gf_

Kökü sabitlemek güvenli mi? Bir MITM için kendi Let's Encrypt sertifikasını kullanmak gerçekten çok kolay.
melbic

2
Bir saldırganın Let's Encrypt kullanarak etki alanı adınız için bir sertifika alması "gerçekten kolay" mı? Bunu yapmanın hiçbir yolunun farkında değilim. Bununla birlikte , etki alanı doğrulama yordamlarında hatalar varsa herhangi bir CA ile mümkün olabilir . LE kökünü sabitleyerek, saldırı yüzeyinizi dünyadaki her CA'nın aksine sadece Let's Encrypt'e indirdiniz. Hala yaprak sabitlemek kadar güvenli değil katılıyorum ama bu kendi risklerini tanıtıyor bu yüzden "güvenli" tanımınıza bağlıdır.
Barry Pollard

HPKP için - çoğunlukla kendi kendine intihar perspektifinden - BÜYÜK riskler olduğunu düşündüğümü söylemek, bu yüzden bir hayran değilim. CA'yı veya sertifika yolu değişikliklerini değiştirmeye karar verirseniz (örn. SHA-256 amortismanı nedeniyle) veya acilen sertifikayı yeniden düzenlemek zorunda kalırsanız veya yedek anahtar tehlikeye girer / kaybolursa veya kurulum yapan kişi ayrılır ve bir sonraki kişi fark etmez HPKP kullanıyorlar ve / veya bilmiyorlar. HPKP ayrıca Superfish gibi yerel köklere karşı da koruma sağlamaz. Bu nedenle, çoğu site için HPKP, çok karmaşıktır ve IMHO, az ek güvenlik kazancı için ek korumaya değmez. Ama bu sadece benim görüşüm.
Barry Pollard

Tamam, sadece tüm LE sertifikalarının aynı kök sertifikaya sahip olduğunu düşündüğüm için sordum. Yani kökünü başka bir LE sertifikası ile sabitlerseniz, sadece bir MITM kullanabilir ve kendi sertifikasında sahte olabilir. Ne demek istediğimi anlıyor musun?
melbic

5

Ben sadece dns01 doğrulaması ile susuz istemci kullanarak uyguladım . DNS'imiz Azure'da barındırıldığı için dns01 kancası certzure .

Düzenleme: Özel anahtarlar hakkında konuştuğumda, her zaman sadece ortak anahtar parçalarını pim haline getirdiğiniz anlamına gelir. Özel anahtarlar, adından da anlaşılacağı gibi, her zaman gizli kalmalıdır. Uygulama ayrıntıları için kendi kancama bakın.


Bunu mümkün kılmak için özel anahtar rollover'ına ihtiyacınız vardır. Yani, her zaman mevcut özel anahtara (A olarak adlandırın) ve gelecekteki özel anahtara (B olarak adlandırın) sahip olursunuz, böylece her ikisini de iğnelerinize ekleyebilirsiniz. Bu noktada pimleriniz A ve B'dir. Sertifika yenileme günü geldiğinde, A özel anahtarı kullanılmaz hale gelir ve B canlı hale gelir. Aynı zamanda gelecekteki yeni bir özel anahtar alırsınız, C olarak adlandırın. Pin listenizi şimdi B ve C içerecek şekilde yeniden oluşturuyorsunuz. Böylece özel anahtarlarınızı bu şekilde devredersiniz. susuz bunu şimdi destekliyor .

Ayrıca, certs'i her yenilediğinizde ve böylece özel anahtarlarınızı devirdiğinizde çağrılan bir kancaya ihtiyacınız vardır. Bunu kendi başıma uyguladım .

Son olarak, bunu doğru yaparsam, şunlardan emin olmalısınız:

HPKP age x 2 < days between cert renewals

Örneğin, HPKP yaşınız 50 gündür ve her 30 günde bir sertifikaları yeniyseniz, sitenizi ilk günde ziyaret eden bir müşteri A ve B özel anahtarlarıyla takılır ve 31. günde B ve C'ye yönlendirilirsiniz. sunucuda B ve C, istemcide A ve B var, 50. günde bile bir eşleşme var ve istemci siteyi doğru bir şekilde açıyor.

AMA HPKP yaşının 70 gün olup olmadığını görelim. Her 30 günde bir certs'i yeniliyorsunuz ve müşteri sitenizi birinci günde ziyaret etti, bu yüzden sadece A ve B özel anahtarları var. 31. günde B ve C'ye, 61. günde C ve D'ye yuvarlandınız. Sunucunuzda C ve D, istemcide A ve B var, eşleşme yok ve istemciye HPKP ilkesinin sona erdiği 61. günden 71. güne kadar orta parmak verilir.


Bir başka, muhtemelen daha güvenli ve kesinlikle daha basit bir seçenek, her seferinde aynı özel anahtarı kullanmak ve bir veya birkaç yedek özel anahtar oluşturmak, daha sonra bunları HPKP yapılandırmanıza sabit kodlamak ve onunla yapılmasıdır.


Evet, zor ve hiç düşünmediğim uyarılar olabilir, ama uzun vadede göreceğiz. Açıkçası, büyük (15 gün) HPKP yaşına sahip kritik olmayan bir alt alana konuşlandırdım, böylece büyük sorunlara yol açmadı.


Düzenleme: Let's Encrypt ile HPKP kurmanıza ve Nginx kullanarak susuz kalmanıza yardımcı olacak birkaç komut dosyası yazdım:

HPKPinx


3
Her iki dünyanın da en iyisini yapmaya karar verdim. Otomatik özel anahtar rollover + statik özel anahtar. İlgilenen varsa bunun hakkında bir blog yazısı yazabilir.
bviktor

1
Bunu yaparsanız, lütfen gönderinizi düzenleyin ve bağlantıyı ekleyin - teşekkürler!
gf_

Teşekkürler, bunu veya gelecek haftayı bitirmek için elimden geleni yapacağım
bviktor

2
Bağlantı eklendi. Belgeler henüz az, ancak kod orada, böylece denemek ve kesmek.
bviktor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.