Ubuntu 16.04 Üzerinde Certbot Standalone Modu Kullanarak Let’s Encrypt SSL Sertifikaları Alma Rehberi
İnternet üzerindeki bilgi akışının güvenliği, günümüz dijital dünyasında her zamankinden daha kritik bir öneme sahiptir. Kullanıcıların web siteleriyle etkileşimde bulunurken verilerinin şifrelenmesi, hem gizliliğin korunması hem de veri bütünlüğünün sağlanması açısından temel bir gerekliliktir. Bu gerekliliği karşılamak için kullanılan en yaygın teknoloji ise SSL/TLS sertifikalarıdır. SSL (Secure Sockets Layer) ve onun daha modern ve güvenli halefi TLS (Transport Layer Security) protokolleri, bir web sunucusu ile tarayıcı arasındaki iletişimi şifreleyerek üçüncü tarafların verilere erişmesini veya değiştirmesini engeller.
Geleneksel olarak, SSL sertifikaları ücretliydi ve kurulum süreçleri karmaşık olabiliyordu. Ancak 2014 yılında ortaya çıkan Let’s Encrypt projesi, bu durumu kökten değiştirdi. Let’s Encrypt, ücretsiz, otomatik ve açık bir Sertifika Yetkilisi (CA) olarak, herkesin web siteleri için güvenilir SSL/TLS sertifikaları almasını ve kullanmasını mümkün kıldı. Bu proje, internetin daha güvenli hale gelmesinde devrim niteliğinde bir rol oynamıştır.
Let’s Encrypt sertifikalarını almak ve yönetmek için kullanılan en popüler araçlardan biri Certbot’tur. Certbot, Electronic Frontier Foundation (EFF) tarafından geliştirilen, Let’s Encrypt sertifikalarını otomatik olarak edinmeyi, kurmayı ve yenilemeyi kolaylaştıran bir komut satırı aracıdır. Çeşitli web sunucuları (Apache, Nginx gibi) için entegrasyon sağlasa da, belirli durumlarda bir web sunucusuna ihtiyaç duymadan da sertifika alabilir. İşte bu noktada “Standalone Modu” devreye girer.
Certbot’un standalone modu, sertifika doğrulaması için geçici olarak kendi web sunucusunu çalıştırır. Bu mod, özellikle mevcut bir web sunucunuzun olmadığı veya var olan web sunucunuzun Certbot tarafından desteklenmeyen bir yapılandırmaya sahip olduğu durumlar için idealdir. Ayrıca, bir web sunucusunun yapılandırmasını değiştirmeden veya geçici olarak durdurup başlatmak istemediğiniz durumlarda da tercih edilebilir. Ubuntu 16.04, uzun süreli destek (LTS) sağlayan bir işletim sistemi olduğu için birçok sunucu ortamında hala kullanılmaktadır ve bu rehber, bu platformda standalone modunu kullanarak Let’s Encrypt sertifikalarını nasıl alacağınızı adım adım açıklamaktadır. Bu rehberin amacı, Certbot standalone modunun temel prensiplerini, kurulumunu, sertifika alma sürecini, sertifikaların yönetimini ve otomatik yenileme mekanizmalarını detaylı bir şekilde anlatmaktır.
Ön Hazırlıklar ve Sistem Gereksinimleri
Certbot standalone modunu kullanarak Let’s Encrypt sertifikası almadan önce, sisteminizin belirli gereksinimleri karşıladığından ve gerekli ön hazırlıkların yapıldığından emin olmanız önemlidir. Bu adımlar, sertifika alma sürecinin sorunsuz ilerlemesini sağlayacaktır.
Domain Adı ve DNS Kayıtları
Bir SSL sertifikası alabilmek için öncelikle geçerli bir alan adına (domain name) sahip olmanız gerekir. Bu alan adının, sertifika almak istediğiniz sunucuyu işaret ettiğinden emin olmalısınız.
* A Kaydı: Alan adınızın (örneğin example.com) veya alt alan adınızın (örneğin www.example.com, sub.example.com) IP adresinizi işaret eden bir A kaydına (veya IPv6 için AAAA kaydına) sahip olması gerekir. Bu kayıtlar, alan adı sağlayıcınızın (domain registrar) veya DNS yönetim paneliniz üzerinden yapılandırılır.
* Yaygın Hata: Çoğu zaman kullanıcılar sadece example.com için bir A kaydı oluşturur ancak www.example.com için oluşturmayı unutur. Eğer hem example.com hem de www.example.com için sertifika almak istiyorsanız, her ikisinin de sunucunuzu işaret eden DNS kayıtlarına sahip olması gerekir.
Ubuntu 16.04 Güncelleme
Sisteminizi güncel tutmak, güvenlik yamalarını almanızı ve yazılım bağımlılıklarının doğru şekilde çözülmesini sağlar. Certbot kurulumuna başlamadan önce aşağıdaki komutları çalıştırarak sisteminizi güncelleyin:
sudo apt update
sudo apt upgrade -y
Bu komutlar, paket listelerinizi günceller ve mevcut tüm paketleri en son sürümlerine yükseltir.
Port 80 ve 443 Erişimi
Certbot standalone modu, Let’s Encrypt sunucularının alan adınızın kontrolünü doğrulaması için HTTP-01 doğrulama yöntemini kullanır. Bu yöntem, Certbot’un geçici olarak port 80 (HTTP) veya port 443 (HTTPS) üzerinde bir web sunucusu çalıştırmasını gerektirir. Let’s Encrypt sunucuları, alan adınız üzerinden bu portlara bağlanarak Certbot’un oluşturduğu özel bir dosyayı doğrular. Bu nedenle:
* Port 80’in Boş Olması: Sertifika alma işlemi sırasında sunucunuzdaki port 80’in boş olması ve başka bir servisin (örneğin Nginx, Apache gibi bir web sunucusu) bu portu kullanmaması gerekir. Eğer bir web sunucusu çalışıyorsa, Certbot’u çalıştırmadan önce geçici olarak durdurmanız gerekecektir:
# Apache için
sudo systemctl stop apache2
# Nginx için
sudo systemctl stop nginx
Sertifika alındıktan sonra web sunucunuzu tekrar başlatabilirsiniz.
* Güvenlik Duvarı (UFW): Ubuntu’da yaygın olarak kullanılan güvenlik duvarı (Uncomplicated Firewall – UFW) aktifse, port 80 ve 443’ün dışarıdan erişilebilir olduğundan emin olmalısınız. Mevcut UFW durumunu kontrol etmek için:
sudo ufw status
Eğer UFW aktifse ve port 80 veya 443’e izin verilmiyorsa, aşağıdaki komutlarla izin verebilirsiniz:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Sertifika alma işlemi tamamlandıktan sonra, eğer sadece port 443’e (HTTPS) izin vermek istiyorsanız, port 80’i tekrar kapatabilirsiniz.
Sudo Yetkileri
Certbot kurulumu ve sertifika alma işlemleri için kök (root) ayrıcalıkları gereklidir. Bu rehberdeki tüm komutlar sudo önekiyle çalıştırılacaktır. Kullandığınız kullanıcının sudo grubunda olduğundan emin olun.
Bu ön hazırlıkları tamamladıktan sonra, Certbot’u kurmaya ve sertifika alma sürecine geçmeye hazırsınız demektir.
Certbot Kurulumu
Ubuntu 16.04 üzerinde Certbot’u kurmak için en önerilen yöntem, Certbot ekibinin resmi PPA (Personal Package Archive) deposunu kullanmaktır. Bu sayede her zaman en güncel ve kararlı Certbot sürümüne erişebilirsiniz.
Certbot PPA Ekleme
İlk olarak, PPA depolarını yönetmek için gerekli olan software-properties-common paketini yüklememiz gerekebilir:
sudo apt install software-properties-common -y
Ardından, Certbot PPA deposunu sisteminize ekleyin:
sudo add-apt-repository ppa:certbot/certbot -y
Bu komut, Certbot’un resmi deposunu sisteminizin paket kaynaklarına ekler. -y bayrağı, onay sorularına otomatik olarak “evet” yanıtı vermeyi sağlar.
Certbot Paketi Kurulumu
PPA deposunu ekledikten sonra, yeni paket listelerini almak için apt update komutunu çalıştırmanız gerekir:
sudo apt update
Şimdi, Certbot paketini yükleyebilirsiniz:
sudo apt install certbot -y
Bu komut, Certbot’un kendisini ve gerekli tüm bağımlılıklarını sisteminize kuracaktır.
Kurulumu Doğrulama
Kurulumun başarılı olup olmadığını kontrol etmek için Certbot’un sürümünü sorgulayabilirsiniz:
certbot --version
Çıktı olarak yüklü Certbot sürümünü görmelisiniz (örneğin certbot 0.31.0). Bu, Certbot’un başarıyla kurulduğunu ve kullanıma hazır olduğunu gösterir.
Certbot Standalone Modu ile Sertifika Alma
Certbot’u kurduktan sonra, sıra geldi Let’s Encrypt sertifikasını standalone modu kullanarak almaya. Bu bölüm, standalone modunun ne olduğunu, nasıl çalıştığını ve farklı senaryolarda nasıl kullanılacağını detaylandıracaktır.
Standalone Mod Nedir ve Neden Kullanılır?
Certbot standalone modu, HTTP-01 doğrulama yöntemi için tasarlanmıştır. Bu modda, Certbot sertifika alma işlemi sırasında kendi hafif web sunucusunu (genellikle Python’da yazılmış) belirli bir portta (varsayılan olarak 80) çalıştırır. Let’s Encrypt sunucuları, alan adınız üzerinden bu geçici web sunucusuna bağlanır ve Certbot’un önceden belirlediği bir “challenge” dosyasını kontrol eder. Bu dosya, alan adının kontrolünü elinizde tuttuğunuzu kanıtlar. Doğrulama başarılı olduğunda, Certbot sertifikayı alır ve geçici web sunucusunu kapatır.
Standalone modu, aşağıdaki durumlar için özellikle kullanışlıdır:
* Mevcut Web Sunucusu Yok: Sunucunuzda henüz bir web sunucusu (Apache, Nginx vb.) kurulu değilse veya kurulu olsa bile sadece sertifika almak istiyorsanız.
* Web Sunucusu Entegrasyonu İstenmiyor: Certbot’un mevcut web sunucusu yapılandırmanıza otomatik olarak müdahale etmesini istemiyorsanız.
* Özel Yapılandırmalar: Web sunucunuzun Certbot’un otomatik yapılandırma eklentileri tarafından desteklenmeyen özel bir yapılandırması varsa.
* Geçici Kullanım: Sadece belirli bir servisi SSL ile güvence altına almak için sertifikaya ihtiyacınız varsa ve web sunucusu kurmak istemiyorsanız (örneğin bir mail sunucusu veya özel bir uygulama için).
Önemli Not: Standalone modunu kullanırken, Certbot’un geçici web sunucusunu çalıştırabilmesi için port 80’in (veya --http-01-port ile belirtilen portun) boş olması gerektiğini unutmayın. Eğer bu port başka bir servis tarafından kullanılıyorsa, Certbot hata verecektir.
Tek Bir Alan Adı İçin Sertifika Alma
Tek bir alan adı için sertifika almak en temel senaryodur. Aşağıdaki komutu kullanarak sertifika alabilirsiniz:
sudo certbot certonly --standalone -d example.com
Bu komutu çalıştırdığınızda, Certbot sizden bazı bilgiler isteyecektir:
1. E-posta Adresi: Acil durumlar ve yenileme bildirimleri için bir e-posta adresi girmeniz istenir. Bu adres, Let’s Encrypt tarafından sertifika süresi dolduğunda veya herhangi bir sorun olduğunda iletişim kurmak için kullanılır.
Enter email address (used for urgent renewal notices and security issues) (Enter 'c' to
cancel): your_email@example.com
2. Hizmet Şartlarını Kabul Etme: Let’s Encrypt’in hizmet şartlarını kabul etmeniz istenir.
Please read the terms of service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in
order to register with the ACME server.
(A)gree/(C)ancel: A
3. EFF Haber Bülteni: EFF’den haber bültenleri almak isteyip istemediğiniz sorulur. İsteğe bağlıdır.
Would you be willing to share your email address with the Electronic Frontier Foundation,
a founding partner of the Let's Encrypt project and the non-profit organization that
develops Certbot?
(Y)es/(N)o: N
Bu adımları tamamladıktan sonra, Certbot geçici web sunucusunu başlatacak, Let’s Encrypt sunucularının doğrulama yapmasını bekleyecek ve sertifikayı alacaktır. Başarılı bir doğrulamanın ardından aşağıdaki gibi bir çıktı görmelisiniz:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2024-07-25. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again. To non-interactively renew all
of your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to EFF: https://eff.org/donate-le
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Bu çıktı, sertifikanızın başarıyla alındığını ve dosya yollarını göstermektedir. example.com yerine kendi alan adınızın geçeceğini unutmayın.
Birden Fazla Alan Adı (Subdomain ve www/non-www) İçin Sertifika Alma
Çoğu zaman hem alan adınızın www versiyonu (örneğin www.example.com) hem de non-www versiyonu (örneğin example.com) için aynı sertifikayı almak istersiniz. Ayrıca farklı alt alan adları (subdomain) için de tek bir sertifika alabilirsiniz. Bu durumlar için, -d bayrağını birden fazla kez kullanarak tüm alan adlarını belirtebilirsiniz:
sudo certbot certonly --standalone -d example.com -d www.example.com -d sub.example.com
Bu komut, belirtilen tüm alan adlarını kapsayan tek bir sertifika alacaktır. Her alan adı için ayrı ayrı doğrulama yapılacaktır. Her bir alan adının DNS kaydının sunucunuzu işaret ettiğinden emin olun.
Wildcard Sertifikalar: Wildcard sertifikalar (örneğin *.example.com), bir alan adının tüm alt alan adlarını kapsar. Ancak, wildcard sertifikalar HTTP-01 doğrulama yöntemiyle alınamaz. Wildcard sertifikaları almak için DNS-01 doğrulama yöntemi gereklidir. Bu yöntem, alan adınızın DNS kayıtlarına özel bir TXT kaydı eklemenizi gerektirir ve standalone moduyla doğrudan desteklenmez. Bu rehber HTTP-01 ve standalone moduna odaklandığı için, wildcard sertifikalar bu kapsamın dışındadır.
Dry Run ile Test Etme
Gerçek bir sertifika almadan önce, her şeyin doğru çalıştığından emin olmak için bir “dry run” (deneme çalıştırması) yapmanız şiddetle tavsiye edilir. Bu, Certbot’un sertifika alma sürecini simüle etmesini sağlar ancak gerçek bir sertifika yayınlamaz.
sudo certbot certonly --standalone -d example.com -d www.example.com --dry-run
Eğer dry run başarılı olursa, gerçek sertifika alma işleminin de başarılı olma olasılığı çok yüksektir. Herhangi bir hata durumunda, hatanın nedenini çıktıdan anlayarak düzeltebilirsiniz.
Hata Ayıklama İpuçları
Sertifika alma sürecinde karşılaşabileceğiniz yaygın hatalar ve çözüm önerileri:
* Port Çakışması: “Problem binding to port 80” veya benzeri bir hata alırsanız, bu genellikle port 80’in başka bir servis tarafından kullanıldığı anlamına gelir. Sertifika almadan önce mevcut web sunucunuzu (Nginx, Apache) durdurduğunuzdan emin olun.
sudo systemctl stop nginx # veya apache2
* DNS Sorunları: “Failed to connect to host for DVSJA verification” veya “DNS problem” gibi hatalar, alan adınızın IP adresinizi doğru şekilde işaret etmediğini gösterebilir. DNS kayıtlarınızı kontrol edin ve değişikliklerin yayılması için yeterli zamanın geçtiğinden emin olun (DNS yayılması birkaç dakika ila birkaç saat sürebilir).
* Güvenlik Duvarı: “Connection refused” veya “timeout” hataları, güvenlik duvarınızın (UFW gibi) port 80’e gelen bağlantıları engellediğini gösterebilir. Port 80’e izin verdiğinizden emin olun:
sudo ufw allow 80/tcp
sudo ufw reload
* Yanlış Alan Adı: --standalone modu yerine yanlışlıkla başka bir mod kullanıyorsanız veya alan adını yanlış yazdıysanız, Certbot hata verecektir. Komutu dikkatlice kontrol edin.
* Rate Limit: Let’s Encrypt’in belirli bir süre içinde alabileceğiniz sertifika sayısına ilişkin “rate limits” (oran sınırlamaları) vardır. Dry run’lar bu sınırlamalara dahil değildir, ancak çok sık başarısız gerçek denemeler yaparsanız bu sınırlamalara takılabilirsiniz.
Bu adımlar ve hata ayıklama ipuçları ile Certbot standalone modunu kullanarak Let’s Encrypt sertifikalarınızı başarıyla almalısınız.
Alınan Sertifikaların Kullanımı ve Konumları
Certbot ile sertifika aldıktan sonra, bu sertifika dosyalarının nerede bulunduğunu ve web sunucunuzda veya diğer uygulamalarınızda nasıl kullanacağınızı bilmek önemlidir.
Sertifika Dosyalarının Anlaşılması
Certbot, aldığı sertifika dosyalarını belirli bir dizin yapısı altında saklar ve bu dosyaların her birinin farklı bir amacı vardır:
* /etc/letsencrypt/live/your_domain/: Bu dizin, en güncel ve etkin sertifika dosyalarına sembolik bağlantılar (symlinks) içerir. Certbot sertifikayı yenilediğinde, yeni dosyalar /etc/letsencrypt/archive/your_domain/ altına kaydedilir ve buradaki sembolik bağlantılar yeni dosyalara güncellenir. Bu, web sunucusu yapılandırmanızın her zaman aynı dosya yollarını kullanabilmesini sağlar.
* fullchain.pem: Bu dosya, sunucu sertifikanızı (cert.pem) ve tüm ara sertifikaları (chain.pem) birleştirilmiş olarak içerir. Çoğu web sunucusu (Nginx, Apache) ve diğer uygulamalar, SSL yapılandırmasında bu dosyayı kullanır. Bu dosya, istemcinin sunucuya güven duyması için gereken tüm sertifika zincirini sağlar.
* privkey.pem: Bu dosya, alan adınızla ilişkili özel anahtarı (private key) içerir. Bu anahtar son derece gizli tutulmalı ve asla kimseyle paylaşılmamalıdır. Sunucunuzun gelen bağlantıları şifreleyip çözebilmesi için bu anahtara ihtiyacı vardır.
* cert.pem: Bu dosya, yalnızca sunucu sertifikasını içerir. Genellikle fullchain.pem yerine tek başına kullanılmaz, çünkü ara sertifikaları içermediği için bazı tarayıcılarda veya istemcilerde güven sorunlarına yol açabilir.
* chain.pem: Bu dosya, yalnızca ara sertifikaları içerir. Kök sertifika dahil değildir, ancak çoğu zaman web sunucusu yapılandırmasında fullchain.pem yeterli olduğu için ayrı olarak kullanılmaz.
Örnek Dosya Yolları: Eğer example.com için sertifika aldıysanız, dosyalarınız şu yollarda bulunacaktır:
* Tam zincir sertifikası: /etc/letsencrypt/live/example.com/fullchain.pem
* Özel anahtar: /etc/letsencrypt/live/example.com/privkey.pem
Sertifikaları Bir Web Sunucusuna Entegre Etme
Sertifikaları aldıktan sonra, bunları web sunucunuza (örneğin Nginx veya Apache) veya başka bir uygulamaya entegre etmeniz gerekir. Aşağıda Nginx ve Apache için genel bir örnek verilmiştir. Detaylı yapılandırmalar web sunucunuzun belgelerine göre değişiklik gösterebilir.
Nginx İçin Örnek Yapılandırma:
Nginx yapılandırma dosyanızda (genellikle /etc/nginx/sites-available/your_domain veya /etc/nginx/nginx.conf içinde), server bloğunuzu HTTPS dinleyecek şekilde düzenlemeniz gerekir:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# SSL Ayarları (güvenlik için önerilen ayarlar)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_stapling on; # OCSP Stapling
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s; # Google DNS
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
root /var/www/html; # Web sitenizin kök dizini
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
HTTP'den HTTPS'ye yönlendirme (isteğe bağlı ama önerilir)
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Yapılandırmayı kaydettikten sonra, Nginx yapılandırma sentaksını kontrol edin ve servisi yeniden başlatın:
sudo nginx -t
sudo systemctl restart nginx
Apache İçin Örnek Yapılandırma:
Apache için mod_ssl modülünün etkinleştirilmesi gerekir (sudo a2enmod ssl). Genellikle /etc/apache2/sites-available/your_domain-le-ssl.conf gibi bir dosyada veya ana yapılandırma dosyasında düzenlemeler yapılır.
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html # Web sitenizin kök dizini
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# SSL Ayarları (güvenlik için önerilen ayarlar)
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
Header always set X-XSS-Protection "1; mode=block"
HTTP'den HTTPS'ye yönlendirme (isteğe bağlı ama önerilir)
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
Yapılandırmayı kaydettikten sonra, Apache yapılandırma sentaksını kontrol edin ve servisi yeniden başlatın:
sudo apache2ctl configtest
sudo systemctl restart apache2
Sertifikaları entegre ettikten sonra, web sitenize https://your_domain adresinden erişerek sertifikanın doğru şekilde yüklendiğini ve tarayıcınızın yeşil kilit simgesini gösterdiğini doğrulayabilirsiniz.
Sertifikaların Otomatik Yenilenmesi
Let’s Encrypt sertifikalarının geçerlilik süresi 90 gündür. Bu kısa süre, sertifikaların kötüye kullanım riskini azaltırken, aynı zamanda otomatik yenileme mekanizmalarının önemini artırır. Certbot, bu yenileme sürecini otomatikleştirmek için güçlü araçlar sunar.
Let’s Encrypt Sertifika Süresi
Let’s Encrypt, güvenlik nedenleriyle sertifikaları 90 günlük bir süreyle verir. Bu, olası bir güvenlik ihlali durumunda sertifikanın geçerlilik süresinin kısa olmasını ve daha hızlı bir şekilde geçersiz kılınabilmesini sağlar. Ancak bu, sertifikaların düzenli olarak yenilenmesi gerektiği anlamına gelir.
Certbot Yenileme Mekanizması
Certbot, sertifikaların süresi dolmadan önce otomatik olarak yenilenmesini sağlamak için tasarlanmıştır. Certbot’u kurduğunuzda, sisteminizde otomatik olarak bir cron işi veya systemd zamanlayıcısı oluşturulur. Bu görev, genellikle günde iki kez certbot renew komutunu çalıştırır.
* certbot renew Komutu: Bu komut, sistemdeki tüm Let’s Encrypt sertifikalarını kontrol eder. Eğer bir sertifikanın süresinin dolmasına 30 günden az kalmışsa, Certbot bu sertifikayı otomatik olarak yenilemeye çalışır. Yalnızca süresi dolmak üzere olan veya zaten süresi dolmuş sertifikaları yeniler.
* --dry-run ile Yenilemeyi Test Etme: Otomatik yenileme mekanizmasının düzgün çalıştığından emin olmak için düzenli olarak bir deneme çalıştırması yapmanız önerilir:
sudo certbot renew --dry-run
Bu komut, gerçek bir yenileme yapmadan süreci simüle eder ve herhangi bir sorun olup olmadığını size bildirir. Başarılı bir dry run, otomatik yenilemenin de sorunsuz çalışacağını gösterir.
* Web Sunucusunu Durdurma/Başlatma (Standalone Modu İçin): Standalone moduyla sertifika alındığında, yenileme işlemi sırasında da Certbot’un port 80’i (veya 443’ü) kullanabilmesi için bu portun boş olması gerekir. Eğer web sunucunuz bu portları kullanıyorsa, yenileme işlemi sırasında web sunucunuzu durdurmanız ve yenileme tamamlandıktan sonra tekrar başlatmanız gerekebilir. Certbot, bu tür durumlar için pre-hook ve post-hook seçenekleri sunar.
* --pre-hook: Yenileme işlemi başlamadan önce çalıştırılacak komut.
* --post-hook: Yenileme işlemi tamamlandıktan sonra çalıştırılacak komut.
Örneğin, Nginx çalışıyorsa:
sudo certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Bu komut, yenileme başlamadan Nginx’i durduracak, yenileme tamamlandıktan sonra (başarılı olsun veya olmasın) Nginx’i tekrar başlatacaktır. Bu komutu cron job’a eklemek yerine, Certbot’un kendi otomatik yenileme mekanizması bu hook’ları otomatik olarak kullanacak şekilde yapılandırılabilir. Certbot, yapılandırma dosyalarında (örneğin /etc/letsencrypt/renewal/example.com.conf) bu hook’ları belirlemenize olanak tanır.
# /etc/letsencrypt/renewal/example.com.conf
[[webroot_map]]
example.com = /var/www/html
[renewalparams]
authenticator = standalone
installer = None
pre_hook = systemctl stop nginx
post_hook = systemctl start nginx
Bu yapılandırma, Certbot’un otomatik yenileme sırasında Nginx’i durdurup başlatmasını sağlayacaktır.
* Cron Job veya Systemd Timer Kontrolü: Certbot’un otomatik yenileme görevinin kurulu olduğundan emin olmak için aşağıdaki komutları kullanabilirsiniz:
* Cron job kontrolü:
cat /etc/cron.d/certbot
Bu dosya, genellikle Certbot’un otomatik yenileme komutunu çalıştıran bir cron girdisi içerecektir.
* Systemd timer kontrolü (daha modern Ubuntu sürümlerinde kullanılır):
systemctl list-timers | grep certbot
Bu komut, Certbot’un zamanlayıcı servisinin aktif olup olmadığını ve ne zaman çalışacağını gösterir.
Otomatik yenileme, Let’s Encrypt sertifikalarının en büyük avantajlarından biridir ve doğru şekilde yapılandırıldığında, sertifika yönetim yükünü önemli ölçüde azaltır. Sertifikalarınızın süresinin dolmaması için bu mekanizmanın düzgün çalıştığından emin olmak kritik öneme sahiptir.
Sertifika Yönetimi ve Diğer Certbot Komutları
Certbot sadece sertifika almak ve yenilemekle kalmaz, aynı zamanda mevcut sertifikalarınızı yönetmek için de çeşitli komutlar sunar. Bu bölüm, sertifikalarınızı listelemeyi, iptal etmeyi ve Certbot’u sisteminizden kaldırmayı ele alacaktır.
Alınan Sertifikaları Listeleme
Sisteminizde Certbot tarafından yönetilen tüm Let’s Encrypt sertifikalarını listelemek için aşağıdaki komutu kullanabilirsiniz:
sudo certbot certificates
Bu komut, her bir sertifika için aşağıdaki bilgileri içeren detaylı bir çıktı verecektir:
* Sertifika Adı: Certbot tarafından verilen benzersiz bir ad (genellikle ana alan adı).
* Domains: Sertifikanın kapsadığı tüm alan adları.
* Validity: Sertifikanın geçerlilik başlangıç ve bitiş tarihleri.
* Certificate Path: fullchain.pem dosyasının yolu.
* Private Key Path: privkey.pem dosyasının yolu.
Bu çıktı, hangi sertifikaların aktif olduğunu, ne zaman sona ereceklerini ve dosya yollarını kolayca görmenizi sağlar.
Found the following certs:
Certificate Name: example.com
Domains: example.com www.example.com
Expiry Date: 2024-07-25 10:30:00+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
Sertifika İptali
Bir sertifikayı iptal etmek, onun artık geçerli olmadığını Let’s Encrypt’e bildirir. Bu, özellikle özel anahtarınızın güvenliğinin ihlal edildiğini düşünüyorsanız veya bir sertifikayı artık kullanmak istemiyorsanız önemlidir.
Bir sertifikayı iptal etmek için revoke komutunu kullanın ve --cert-name ile sertifikanın adını belirtin (bu adı certbot certificates çıktısından alabilirsiniz):
sudo certbot revoke --cert-name example.com
Bu komut, Certbot’a sertifikayı iptal etmesini söyler. İptal edilen bir sertifika, tarayıcılar tarafından güvenilmez olarak işaretlenecektir.
Sertifika Silme
Bir sertifikayı iptal ettikten veya artık kullanmak istemediğinizde, Certbot’un sisteminizdeki kayıtlarını ve dosyalarını da silebilirsiniz. Bu, /etc/letsencrypt/live/, /etc/letsencrypt/archive/ ve /etc/letsencrypt/renewal/ dizinlerinden ilgili sertifika dosyalarını ve yapılandırmalarını kaldırır.
sudo certbot delete --cert-name example.com
Bu komut, Certbot’un o sertifika ile ilgili tüm izlerini sistemden siler.
Certbot Kaldırma
Eğer Certbot’u sisteminizden tamamen kaldırmak istiyorsanız, aşağıdaki komutları kullanabilirsiniz:
1. Certbot paketini kaldırın:
sudo apt remove certbot -y
2. Certbot PPA deposunu kaldırın:
sudo add-apt-repository --remove ppa:certbot/certbot -y
3. Certbot’un oluşturduğu tüm yapılandırma ve sertifika dosyalarını silin:
sudo rm -rf /etc/letsencrypt/
UYARI: Bu komut, tüm Let’s Encrypt sertifikalarınızı ve yapılandırmalarınızı kalıcı olarak silecektir. Bu işlemi yapmadan önce yedek aldığınızdan veya bu sertifikalara artık ihtiyacınız olmadığından emin olun.
4. Paket listelerinizi güncelleyin:
sudo apt update
Bu adımlar, Certbot’u ve onunla ilişkili tüm dosyaları sisteminizden tamamen kaldıracaktır.
Sonuç
Bu rehber boyunca, Ubuntu 16.04 üzerinde Certbot standalone modunu kullanarak Let’s Encrypt SSL/TLS sertifikalarını nasıl alacağınızı, yöneteceğinizi ve otomatik olarak yenileyeceğinizi detaylı bir şekilde inceledik. Standalone modunun, özellikle mevcut bir web sunucusunun olmadığı veya Certbot’un web sunucusu entegrasyonuna ihtiyaç duymadığınız durumlarda ne kadar pratik ve etkili bir çözüm olduğunu gördük.
Let’s Encrypt projesi, internetin daha güvenli hale gelmesinde kritik bir rol oynamış ve ücretsiz, otomatik ve erişilebilir SSL/TLS sertifikaları sunarak web güvenliğini demokratikleştirmiştir. Certbot ise bu süreci son derece kolaylaştıran güçlü bir araçtır. Standalone moduyla, sunucunuzun temel ihtiyaçları için bile hızla güvenli bir bağlantı kurabilir ve veri şifrelemesini sağlayabilirsiniz.
Unutulmamalıdır ki, bir sertifika almak sadece başlangıçtır. Sertifikaların 90 günlük geçerlilik süresi nedeniyle otomatik yenileme mekanizmasının düzgün çalıştığından emin olmak, kesintisiz bir güvenli bağlantı sağlamak için hayati öneme sahiptir. Ayrıca, güvenlik duvarı yapılandırmaları ve DNS kayıtları gibi ön hazırlık adımlarının doğru yapılması, sertifika alma ve yenileme süreçlerinin sorunsuz ilerlemesini garanti eder.
Dijital çağda, web sitelerinin güvenliği ve kullanıcı gizliliği artık bir lüks değil, bir zorunluluktur. Certbot ve Let’s Encrypt sayesinde, bu zorunluluğu yerine getirmek hiç bu kadar kolay olmamıştı. Bu rehberdeki adımları takip ederek, Ubuntu 16.04 sunucunuzda güçlü bir SSL/TLS şifrelemesi uygulayabilir ve kullanıcılarınıza güvenli bir deneyim sunabilirsiniz. Güvenlik, sürekli dikkat ve bakım gerektiren bir süreçtir; bu nedenle Certbot’un sunduğu araçları etkin bir şekilde kullanmak, dijital varlıklarınızın korunmasında önemli bir adımdır.