Tarayıcılar HTTPS olmayan siteleri "güvenli değil" diye işaretliyor; artık sertifika bir tercih değil temel gereklilik. Ama hangi sertifikayı alacağınız, kurulumu nasıl doğrulayacağınız ve yenilemeyi nasıl otomatikleştireceğiniz hâlâ karar gerektiren konular.
Üç doğrulama seviyesi
- DV (Domain Validation): Yalnız alan adının kontrolü doğrulanır; dakikalar içinde çıkar. Şifreleme gücü diğerleriyle aynıdır. Tanıtım siteleri, bloglar ve çoğu e-ticaret için yeterlidir.
- OV (Organization Validation): Şirketin varlığı da doğrulanır; sertifika ayrıntılarında kurum adı görünür. Kurumsal siteler ve müşteri paneli barındıran uygulamalar için tercih edilir.
- EV (Extended Validation): En kapsamlı inceleme. Tarayıcılar 2019'dan beri adres çubuğunda yeşil şirket adı göstermiyor; bu yüzden EV'nin görünür pazarlama değeri azaldı. Bankacılık ve ödeme kuruluşları gibi düzenlemeye tabi alanlarda hâlâ tercih ediliyor.
| Seviye | Çıkış süresi | Doğrulanan | Tipik kullanım |
|---|---|---|---|
| DV | Dakikalar | Alan adının denetimi | Blog, tanıtım sitesi, çoğu e-ticaret |
| OV | 1–3 iş günü | Alan adı ve şirket kaydı | Kurumsal site, müşteri paneli |
| EV | 3–10 iş günü | Şirketin genişletilmiş incelemesi | Düzenlemeye tabi finans kuruluşları |
Önemli nokta: üç seviye de aynı şifrelemeyi kullanır. Fark güvende değil, kimliğin ne kadar doğrulandığındadır.
Kaç alan adını kapsıyor?
- Tek alan adı:
alanadiniz.comve genelliklewww.alanadiniz.com. - Joker (wildcard):
*.alanadiniz.com— tüm birinci seviye alt alan adlarını kapsar. Çok sayıda alt alan adı yönetiyorsanız hem ucuz hem pratiktir. İki seviye derine (a.b.alanadiniz.com) inmez. - Çok alanlı (SAN/UCC): Farklı alan adlarını tek sertifikada toplar.
Let's Encrypt yeterli mi?
Çoğu site için evet. Ücretsizdir, DV seviyesindedir, 90 gün geçerlidir ve otomatik yenilenmek üzere tasarlanmıştır. Ücretli sertifikayı tercih etmenizi gerektirecek durumlar: kurum adının sertifikada görünmesi isteniyorsa, garanti ve sigorta koşulları sözleşmenizde şartsa, ya da OV/EV seviyesi bir denetim gerekliliğiyse.
90 günlük süre bir dezavantaj değil, bir disiplin aracıdır: yenileme otomatik değilse zaten üç ayda bir sertifika düşer ve bunu fark edersiniz. Otomasyonu ilk günden kurun ve yenilemeyi ayrıca izleyin.
Doğrulama yöntemi: HTTP-01 mi, DNS-01 mi?
Ücretsiz sertifika verilmeden önce alan adının sizde olduğu sınanır. İki yaygın yol var ve seçim, joker sertifika isteyip istemediğinize göre değişir:
- HTTP-01: Sunucu
/.well-known/acme-challenge/altına geçici bir dosya koyar, doğrulayıcı onu okur. Kurulumu en kolay yoldur. Bu dizini yönlendirme, kimlik doğrulama ve IP kısıtlama kurallarınızdan muaf tutun; yenilemenin aylar sonra sessizce durmasının bir numaralı sebebi buranın kapanmasıdır. - DNS-01: Alan adına geçici bir TXT kaydı yazılır. Joker sertifika yalnız bu yolla alınır. DNS sağlayıcınızın bir arayüzü varsa otomatikleşir; yoksa her yenilemede elle kayıt girmek gerekir, yani 90 günde bir unutulacak bir iş. Kayıt tiplerinin ayrıntısı DNS kayıtları yazısında.
Tek alan adı için tipik komut şudur; her iki biçimi de tek sertifikada toplar:
certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
Kurulumdan sonra dört kontrol
- Ara sertifika zinciri tam mı? En sık yapılan hatadır. Masaüstü
tarayıcı eksik zinciri kendi başına tamamlayabilir; mobil tarayıcı ve API istemcileri
tamamlayamaz ve hata verir. Zinciri sunucudan doğrulamak için:
openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.comkomutunu çalıştırın; çıktıdakiVerify return code: 0 (ok)satırı zincirin tam olduğunu söyler. Sertifika listesinde yalnız kendi sertifikanız görünüyorsa yapılandırmada tam zincir dosyasını (fullchain.pem) kullanın. - Yönlendirme kurulu mu?
http://adresleri kalıcı yönlendirme (301) ile HTTPS'e gitmeli, hemwwwhemwww'suz biçim tek bir hedefte birleşmeli. - Karışık içerik var mı? Sayfa HTTPS ama içindeki görsel veya betik
http://ile çağrılıyorsa tarayıcı uyarı verir ya da kaynağı hiç yüklemez. Veritabanındaki eski mutlak adresleri toplu güncelleyin. - Protokol sürümleri. TLS 1.2 ve 1.3 açık, eski sürümler kapalı olmalı.
Tarayıcı hatasından sebebe
Sertifika sorunlarının çoğu birkaç tanıdık belirtiyle gelir. Belirtiyi doğru okumak, tahminle uğraşılan bir saati beş dakikaya indirir:
| Belirti | Muhtemel sebep | Çözüm |
|---|---|---|
| Ad uyuşmuyor uyarısı | Sertifika www'suz biçimi kapsamıyor | Her iki adı da sertifikaya ekleyin |
| Masaüstünde sorunsuz, mobilde hata | Ara sertifika eksik | Tam zincir dosyasını kurun |
| Kilit simgesi yok ama hata da yok | Karışık içerik | Kaynak adreslerini HTTPS'e çevirin |
| Süresi dolmuş uyarısı | Yenileme görevi çalışmıyor | Doğrulama yolunu ve zamanlanmış görevi denetleyin |
| Eski istemcilerde bağlantı kopuyor | TLS 1.0 ve 1.1 kapatıldı | Beklenen davranış; istemci güncellenmeli |
Sık yapılan üç yanlış karar
- Her alt alan adına ayrı sertifika almak. Beşten fazla alt alan adı yönetiyorsanız joker sertifika hem daha ucuz hem yönetimi kolaydır. Altındaki tek koşul DNS-01 doğrulamasını kurabilmektir.
- EV'yi güvenlik yatırımı sanmak. Şifreleme aynıdır; ödediğiniz şey kimlik doğrulamasının derinliğidir ve ziyaretçi bu farkı artık adres çubuğunda göremiyor.
- HSTS ön yükleme listesine erken girmek. Listeye girmek kolay, çıkmak aylar sürer. Tüm alt alan adlarınız kalıcı olarak HTTPS'e hazır olmadan başvurmayın.
HSTS: güçlü ama geri alınamaz
Strict-Transport-Security başlığı, tarayıcıya "bu siteye bundan sonra
yalnız HTTPS ile bağlan" der. Güvenliği artırır, ama süresi dolana kadar geri alınamaz.
Kısa bir süreyle başlayın (örneğin bir gün), her şeyin sorunsuz çalıştığını doğrulayın,
sonra süreyi uzatın. Tüm alt alan adlarınız HTTPS'e hazır değilken
includeSubDomains eklemeyin.
Sertifikayı komut satırından okumak: zincir, tarih ve ad
Tarayıcının kilit simgesi tek bir bilgisayardan, o anki önbellekle verilmiş bir hükümdür. Asıl kontrol, sunucunun herkese gönderdiği sertifikayı doğrudan okumaktır. OpenSSL her Linux sunucuda vardır:
echo | openssl s_client -connect ornek.com:443 -servername ornek.com 2>/dev/null \
| grep -E 'Verify return code|^ [0-9] s:|^ i:'
-servername parametresini atlamayın; aynı IP adresinde birden çok site varsa sunucu hangi sertifikayı göndereceğini bu adla seçer. Sağlam bir kurulumda çıktı şöyle görünür (kendi sitemizde aldığımız çıktı):
0 s:CN = turklokasyon.com
i:C = US, O = Google Trust Services, CN = WE1
1 s:C = US, O = Google Trust Services, CN = WE1
i:C = US, O = Google Trust Services LLC, CN = GTS Root R4
Verify return code: 0 (ok)
Okuma kuralı basittir: her satırdaki i: (veren) bir sonraki satırdaki s: (konu) ile aynı olmalı. 0 numaralı satır sizin sertifikanız, sonrakiler ara sertifikalardır. Zincir kopuksa son satır bunu kodla söyler. Bilerek bozuk yapılandırılmış deneme sunucularında aldığımız üç kod en sık görülen üç sorunu karşılar:
- 21 (unable to verify the first certificate) — ara sertifika gönderilmiyor. Çıktıda yalnız 0 numaralı satır vardır. Çözüm, sunucuya yalnız sertifikayı değil
fullchaindosyasını göstermektir. - 10 (certificate has expired) — süre dolmuş. Yenileme çalışmamış ya da yenilenen sertifika servise yeniden yüklenmemiştir.
- 62 (hostname mismatch) — sertifika başka bir ad için verilmiş. Bu kodu görmek için komuta
-verify_hostname ornek.comeklemek gerekir; eklemezseniz OpenSSL adı denetlemez ve 0 döndürebilir.
Tarihleri ve kapsanan adları görmek için sertifikayı ikinci bir komuta aktarın:
echo | openssl s_client -connect ornek.com:443 -servername ornek.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
notAfter bitiş tarihidir; Subject Alternative Name satırı sertifikanın gerçekte hangi adları kapsadığını gösterir. Tarayıcı artık eski CN alanına değil bu listeye bakar; www adı listede yoksa o adres hata verir. Aynı bilgileri kurulum yapmadan görmek isterseniz SSL sertifika kontrolü aracını kullanabilirsiniz. Süresi dolmuş bir sertifikayla karşılaştığınızda izlenecek adımları SSL sertifikasının süresi dolduğunda yazısında ayrıca anlatıyoruz.
Yenilemeyi izleyin
Otomatik yenileme kurulu olsa bile bir gün sessizce bozulabilir: yapılandırma değişir, doğrulama dosyasına erişim kapanır, servis yeniden başlatılmaz. Sertifikanın son geçerlilik tarihini izlemeye alın ve 14 gün kala uyarı üretin. Sertifika süresi dolduğunda site yavaşlamaz — tamamen erişilemez hale gelir; bu yüzden uyarı eşiği rahat olmalıdır.
Kurulumdan hemen sonra yenileme akışını bir kez prova edin:
certbot renew --dry-run
Bu komut gerçek sertifikaya dokunmadan doğrulamayı, yazmayı ve servis yeniden yükleme
adımını sınar. Zamanlayıcının kurulu olduğunu systemctl list-timers çıktısında
görmelisiniz; görev listede yoksa yenileme hiç çalışmayacak demektir.
Barındırma paketlerimizde Let's Encrypt sertifikası panelden tek tıkla kurulur ve otomatik yenilenir. Kendi sunucunuzu yönetiyorsanız yenileme görevinin çalıştığını doğrulamak sizin sorumluluğunuzdadır; izleme yazısındaki sertifika kontrolünü listenize ekleyin.
Sık sorulan sorular
"Unable to verify the first certificate" hatası ne demek?
Sunucu kendi sertifikasını gönderiyor ama onu imzalayan ara sertifikayı göndermiyor. Masaüstü tarayıcılar eksik parçayı önbellekten tamamlayabildiği için site çoğu zaman açık görünür; mobil cihazlar, API istemcileri ve curl ise bağlantıyı reddeder. Web sunucusunda sertifika dosyası olarak fullchain dosyasını gösterin.
SSL sertifikasının bitiş tarihini nasıl öğrenirim?
Tarayıcıda kilit simgesinden sertifika ayrıntılarına bakabilir ya da komut satırında openssl s_client çıktısını openssl x509 -noout -dates komutuna aktarabilirsiniz. notAfter satırı bitiş tarihidir ve UTC saatiyle yazılır.
Sertifika www olmadan çalışıyor, www ile hata veriyor. Neden?
Sertifikanın Subject Alternative Name listesinde www adı yok. Sertifikayı iki adı birden kapsayacak şekilde yeniden alın (örneğin certbot'a iki ayrı -d parametresi verin) ya da tek bir adı kanonik seçip diğerini ona yönlendirin; yönlendirmenin de geçerli bir sertifikayla yapılması gerektiğini unutmayın.
- #ssl
- #tls
- #sertifika
Sertifikayla uğraşmak istemiyor musunuz? Hosting paketlerimizde Let's Encrypt sertifikası panelden tek tıkla kurulur ve otomatik yenilenir.
Hosting paketlerine bakın