Dünyanın en detaylı ücretsiz FDE + DevOps kütüphanesi: 140 üzeri ders, 70 üzeri lab ve 80 uzun yazı, İngilizce ve Türkçe. Öğrenmeye başla →

DevOps Foundations · Modül 2: Ağ, DNS, HTTP ve TLS

TLS Zincirleri, Makine Adları ve Süre Dolumu

TLS arızaları tarayıcıda aynı, komut satırında bambaşka görünür. Bu ders üç kontrolü verir; sertifika olayları doğru yenileme, yeniden sipariş veya yeniden dağıtımla biter.

11 dk okuma

Kazanımlar

  • Komut satırından sertifika zinciri, makine adı ve süre dolumunu doğrulamak
  • Yaygın her TLS hatasını belirli bir başarısız kontrol olarak açıklamak
  • Süresi dolmuş sertifikayı yanlış makine adından ve güvenilmeyen zincirden ayırmak
  • Üretime dokunmadan deneme sertifikalarıyla TLS kontrolleri çalıştırmak

Neden önemli

Her ekibin bir sertifika hikâyesi vardır: kimsenin sahip olmadığı tek servis hariç her yerde yenilenen joker sertifika, tatilde dolar. Kesinti geriye dönük hiç gizemli değildir; zincir aylardır doğrulanabilirdi. TLS olayları, zamanlanmamış planlı olaylardır. Üç ayda bir doğrulama alışkanlığı ve üç hatayı okuma becerisi onları çağrıdan kayda çevirir.

Kavramlar

TLS bağlantısı üç bağımsız kontrolden geçer; her biri kendi hatasını üretir. Zincir kontrolü, sunucu sertifikasından güvendiğin köke kesintisiz imza yolu olup olmadığını sorar: sunucu sertifikası, ara sertifika, kök; her biri sonrakiyle imzalı. Sunucular ara sertifikaları göndermelidir; göndermeyince bazı istemciler başarır (arayı önbelleğe almışlardır), bazıları unable to get local issuer certificate ile düşer. Bu yüzden TLS tarayıcında çalışıp hatta bozulur. Makine adı kontrolü, sertifikanın bağlandığın makineyi adlandırıp adlandırmadığını sorar; SAN girdilerine bakılır, modası geçmiş CN alanına değil: api.example.com için geçerli sertifika internal-api.example.com adresinde makine adı uyuşmazlığıyla düşer; bunu yenileme düzeltemez. Süre kontrolü, yoldaki her sertifikada şimdinin notBefore ile notAfter arasında olup olmadığını sorar; ekiplerin unuttuğu ara sertifikalar dahil.

openssl s_client üçünü de hiçbir şeyi değiştirmeden erişilebilir her uca karşı çalıştırır: bağlanır, -showcerts ile sunulan zinciri basar, doğrulama sonuç kodunu raporlar. Verify return code: 0 ile dönen 0 sağlık demektir. Kod 20 güvenilmeyen verendir (eksik ara veya güven deposunun tanımadığı özel CA). Kod 21 doğrulanamayan ilk sertifikadır. Makine adı uyuşmazlıkları s_client'in kendisinden çok istemci ve kütüphanelerde yüzeye çıkar; bu yüzden curl --resolve veya küçük doğrulama betiği tabloyu tamamlar. Özel test CA'leri için aracı CA dosyasına açıkça göster (-CAfile); doğrulamayı kapatma: testteki --insecure, kopyayla ve alışkanlıkla üretime taşınır.

Süre dolumu kendi izlemeyi hak eder, çünkü tarihi bilinen tek TLS arızasıdır. Bitiş tarihlerini disk alanı gibi kontrol et: eşikli sayı olarak, 30 ve 7 günde uyarıyla, adı belli insan sahibiyle. Kısa ömürlü otomatik sertifikalar arıza kipini yıllık sürprizden sessizce yenileyen ya da gürültüyle bozan günlük otomasyona çevirdi; ikisi de aynı kontrolü ister, çünkü otomasyon tam dikkat başka yere kayınca bozulur.

Uygulamalı örnek

Hazırlık istemcileri yeni iç API'yi TLS hatasıyla reddediyor. Hangi kontrol?

$ echo | openssl s_client -connect internal-api:8443 -servername internal-api 2>/dev/null | grep -E "Verify return|subject=|issuer=" Verify return code: 62 (Hostname mismatch) subject=CN = api.example.com issuer=C = US, O = Example, CN = Example Staging CA

Beklenen okuma: kod 62 makine adı kontrolünü adlandırır; subject kanıtlar: dağıtılan sertifika api.example.com adını taşırken istemciler internal-api adresine bağlanıyor. Bu sertifikanın yenilenmesi yardımcı olmaz; düzeltme, SAN listesinde gerçek adı taşıyan sertifikadır (ya da gerçek adın kullanılması, istenen buysa). Issuer satırı takip işi için ikinci bulguyu ekler: hazırlık CA'si; yani düzeltilmiş sertifika bile istemci güven depolarında CA ister. L06 labı üç arıza sınıfını da yerel test CA ve deneme sertifikalarına karşı canlandırır; hatalar çağırmadan önce tanınır.

Yaygın yanlış hamle

Dağıtımın önünü açmak için doğrulamayı kapatmak. Geçici diye işlenen her --insecure, verify=False ve NODE_TLS_REJECT_UNAUTHORIZED=0 değerinin üretimde torunu vardır; her biri gelecekteki her ağ saldırganını görünmez proksiye çevirir. Doğrulama arızaları sistemin çalışmasıdır; susturmak olaydır. Test ortamları, kapatılmış kontrollerle değil açık güvenle test CA'si alır.

Lab ve sonraki adım

L06 labı yerel test CA kurar, kasıtlı kusurlu deneme sertifikaları üretir (yanlış isim, süresi dolmuş, eksik ara) ve her birinin doğru teşhisini komut satırından ister; herkese açık alan adı ve gerçek DNS hesabı yoktur. Buradan yol M03'e devam eder; bağlantılar programa dönüşür: ağ düşünce güvenle düşmesi gereken kabuk otomasyonu.

Mini kontrol

4 soruluk isteğe bağlı öz kontrol. Yanıtlar cihazından çıkmaz, saklanmaz ve hiçbir değerlendirmeye sayılmaz.

Ders geri bildirimi

Henüz yayında geri bildirim yok.

Geri bildirim yazmak için giriş yap ve dersi tamamla.

Kaynaklar

Alıştırma

openssl ile kullandığın herkese açık bir sitenin zincir ve bitiş tarihlerini bas; kalan günü ve vereni not et; site yarın makine değiştirse üç kontrolden hangisinin uyuşmazlığı yakalayacağını yaz.

Geçme kriterleri

Zincir, veren ve bitiş tarihleri kalan gün hesabıyla gösterilmiş; uyuşmazlığı yakalayacak kontrol doğru adlandırılmış (zincir veya süre değil, makine adı).

İlerlemeni kaydetmek için giriş yapÜcretsiz hesap: yalnızca ders ilerlemen ve quiz sonuçların saklanır.