UnrealIRCd İçin Let's Encrypt SSL/TLS Sertifikası Kurulumu
İçindekiler
- Neden Geçerli Bir Sertifika?
- Ön Koşullar
- 1. Certbot Kurulumu
- 2. Sertifika Almak
- 3. Dosyaları UnrealIRCd'ye Taşımak
- 4. Sertifikayı Yüklemek
- 5. Otomatik Yenileme
- 6. Sertifika Yenilemenin Sunucu Bağlantılarına Etkisi
- Sertifikayı Doğrulamak
- Sık Karşılaşılan Sorunlar
- Birden Fazla Sunucuda Aynı Sertifika
- Sertifika Sona Erme Tarihini İzlemek
- TLS Ayarlarını Sıkılaştırmak
- Kullanıcılara Duyuru
- Sonuç
UnrealIRCd kurulum sırasında kendinden imzalı bir sertifika oluşturur. Bu sertifika bağlantıyı şifreler ama istemciler onu tanımadığı için kullanıcılar bağlanırken güvenlik uyarısı görür. Gerçek bir ağ için geçerli bir sertifika şarttır. Bu rehberde UnrealIRCd SSL sertifika kurulumunu ücretsiz Let's Encrypt sertifikalarıyla adım adım anlatıyoruz.
Neden Geçerli Bir Sertifika?
- Uyarısız bağlantı: mIRC, HexChat ve web istemcileri geçerli sertifikalarda uyarı göstermez.
- Gerçek güvenlik: Kendinden imzalı sertifikalarda kullanıcılar uyarıları geçmeye alışır; bu da ortadaki adam saldırılarına kapı açar.
- Modern istemci uyumu: Bazı istemciler ve web tabanlı arayüzler geçersiz sertifikalı sunuculara hiç bağlanmaz.
- WebSocket ve web istemcileri: Tarayıcılar geçersiz sertifikaya sahip WebSocket bağlantılarını reddeder. Bkz. WebSocket.
Ön Koşullar
- Sunucunuz için gerçek bir alan adı (ör.
irc.ornekagi.net) ve bu adın sunucunuzun IP'sini gösteren DNS kaydı, - Sunucuda root veya sudo yetkisi (certbot kurulumu için),
- Doğrulama sırasında 80 numaralı portun geçici olarak erişilebilir olması (HTTP doğrulaması kullanılacaksa).
1. Certbot Kurulumu
Debian ve Ubuntu'da:
sudo apt install -y certbot
2. Sertifika Almak
Sunucuda başka bir web sunucusu çalışmıyorsa certbot'un kendi geçici web sunucusunu kullanabilirsiniz:
sudo certbot certonly --standalone -d irc.ornekagi.net -d istanbul.ornekagi.net
Birden fazla -d ile, kullanıcıların bağlanabileceği bütün adları tek sertifikaya ekleyebilirsiniz. Round-robin kullanıyorsanız hem ana adı (irc.ornekagi.net) hem de sunucunun kendi adını eklemeyi unutmayın.
Sunucuda zaten bir web sunucusu çalışıyorsa --webroot yöntemini veya DNS doğrulamasını kullanabilirsiniz. DNS doğrulaması, 80 numaralı portu hiç açmadan sertifika almanızı sağlar ve birden fazla sunucuda aynı sertifikayı kullanmak istediğinizde pratiktir.
İşlem başarılı olursa sertifika dosyaları /etc/letsencrypt/live/irc.ornekagi.net/ klasörüne kaydedilir:
fullchain.pem: Sertifika ve ara sertifikalar,privkey.pem: Özel anahtar.
3. Dosyaları UnrealIRCd'ye Taşımak
UnrealIRCd root olmayan bir kullanıcıyla çalıştığı için /etc/letsencrypt altındaki özel anahtarı okuyamaz. En temiz yol, dosyaları UnrealIRCd'nin TLS klasörüne kopyalayıp sahipliğini ayarlamaktır:
sudo cp /etc/letsencrypt/live/irc.ornekagi.net/fullchain.pem /home/ircd/unrealircd/conf/tls/server.cert.pem
sudo cp /etc/letsencrypt/live/irc.ornekagi.net/privkey.pem /home/ircd/unrealircd/conf/tls/server.key.pem
sudo chown ircd:ircd /home/ircd/unrealircd/conf/tls/server.*.pem
sudo chmod 600 /home/ircd/unrealircd/conf/tls/server.key.pem
UnrealIRCd varsayılan olarak bu dosya adlarını kullandığı için yapılandırmada ek bir değişiklik gerekmez. Farklı bir konum kullanmak isterseniz set bloğundaki TLS ayarlarında sertifika ve anahtar yolunu belirtebilirsiniz.
4. Sertifikayı Yüklemek
Sunucu çalışıyorsa yeni sertifikayı kimseyi düşürmeden yüklemek için oper olarak:
/rehash -tls
Bu komut yalnızca TLS ayarlarını ve sertifikaları yeniden yükler. Ardından mIRC ile +6697 portuna bağlanıp uyarı çıkmadığını kontrol edin.
5. Otomatik Yenileme
Let's Encrypt sertifikaları 90 gün geçerlidir ve certbot bunları otomatik olarak yeniler. Ancak yenilenen dosyaların UnrealIRCd'ye kopyalanması ve yeniden yüklenmesi gerekir. Bunun için certbot'un deploy hook özelliği kullanılır. /etc/letsencrypt/renewal-hooks/deploy/unrealircd.sh adlı bir betik oluşturun:
#!/bin/sh
SRC=/etc/letsencrypt/live/irc.ornekagi.net
DST=/home/ircd/unrealircd/conf/tls
cp "$SRC/fullchain.pem" "$DST/server.cert.pem"
cp "$SRC/privkey.pem" "$DST/server.key.pem"
chown ircd:ircd "$DST"/server.*.pem
chmod 600 "$DST/server.key.pem"
su - ircd -c "/home/ircd/unrealircd/unrealircd rehash"
Betiği çalıştırılabilir yapın:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/unrealircd.sh
Yenilemenin doğru çalıştığını test etmek için:
sudo certbot renew --dry-run
6. Sertifika Yenilemenin Sunucu Bağlantılarına Etkisi
Sunucularınızı birbirine spkifp ile bağladıysanız dikkat: Certbot varsayılan olarak her yenilemede yeni bir özel anahtar üretebilir. Anahtar değişirse spkifp değeri de değişir ve sunucu bağlantıları kopar. Bunu önlemenin iki yolu vardır:
- Certbot'a yenilemede aynı anahtarı kullanmasını söylemek (
--reuse-keyseçeneği), - Sunucu bağlantıları için ayrı, uzun ömürlü bir sertifika kullanmak.
İkinci yöntem genellikle daha temizdir: Kullanıcıların gördüğü sertifika Let's Encrypt'ten gelir, sunucular arası bağlantılar ise kendi anahtarınızla doğrulanır.
Sertifikayı Doğrulamak
Dışarıdan sertifikayı kontrol etmek için:
openssl s_client -connect irc.ornekagi.net:6697 -servername irc.ornekagi.net
Çıktıda sertifika zincirini, geçerlilik tarihlerini ve "Verify return code: 0 (ok)" satırını görmelisiniz.
Sık Karşılaşılan Sorunlar
| Sorun | Çözüm |
|---|---|
| "unable to load private key" | Dosya izinlerini ve sahipliğini kontrol edin |
| İstemci hâlâ uyarı veriyor | Ara sertifikaların bulunduğu fullchain.pem yerine cert.pem kopyalanmış olabilir |
| Ad uyuşmazlığı uyarısı | Bağlanılan ad sertifikada yok; certbot'a o adı da ekleyin |
| Yenilemeden sonra eski sertifika görünüyor | Deploy hook çalışmamış; rehash -tls komutunu kontrol edin |
| Sunucu linkleri koptu | Anahtar değişti; spkifp değerlerini güncelleyin |
Birden Fazla Sunucuda Aynı Sertifika
Ağınızda birden fazla istemci sunucusu varsa ve kullanıcılar ortak bir adla (irc.ornekagi.net) bağlanıyorsa, bu adı içeren sertifikanın bütün sunucularda bulunması gerekir. İki yaygın yaklaşım vardır. Birincisi, her sunucunun kendi sertifikasını kendi alması; bu durumda her sunucu hem ortak adı hem de kendi özel adını sertifikaya ekler. HTTP doğrulaması round-robin adlarda sorun çıkarabileceği için bu yöntemde DNS doğrulaması daha güvenilirdir. İkincisi, sertifikayı tek bir merkezde alıp güvenli bir kanal üzerinden diğer sunuculara dağıtmak. Bu yöntem daha merkezi ama dağıtım betiğinin güvenliğine dikkat etmeyi gerektirir; özel anahtarı taşıyan bağlantının şifreli olması ve hedef dosyaların izinlerinin doğru ayarlanması şarttır.
Sertifika Sona Erme Tarihini İzlemek
Otomatik yenileme kurulmuş olsa bile bazen bir şeyler ters gidebilir: DNS kaydı değişir, güvenlik duvarı 80 numaralı portu kapatır veya certbot güncellemesinden sonra bir ayar bozulur. Sertifikanın sona ermesine birkaç gün kala uyarı veren basit bir izleme betiği veya harici bir izleme hizmeti kullanmak, kullanıcılarınızın bir sabah bağlanamadığını fark etmenizi önler. openssl ile sertifikanın bitiş tarihini okuyup belirli bir eşiğin altına düştüğünde e-posta gönderen birkaç satırlık bir betik bu iş için yeterlidir.
TLS Ayarlarını Sıkılaştırmak
UnrealIRCd'nin varsayılan TLS ayarları güvenli protokolleri ve şifre takımlarını tercih eder; bu yüzden çoğu kurulumda ek bir ayara gerek yoktur. Eski ve güvensiz protokolleri elle açmaktan kaçının. Çok eski istemcilerin bağlanamadığına dair şikâyet alırsanız çözüm, güvenliği düşürmek yerine kullanıcıları güncel bir istemciye yönlendirmektir.
Kullanıcılara Duyuru
Geçerli sertifikaya geçtikten sonra kullanıcılarınıza bunu duyurun ve daha önce kendinden imzalı sertifika için kalıcı istisna tanımlamış olanlara bu istisnayı kaldırmalarını önerin. Böylece ileride gerçekten şüpheli bir sertifikayla karşılaştıklarında istemcileri onları doğru şekilde uyarır.
Sonuç
Let's Encrypt ile geçerli bir sertifika kurmak birkaç dakikanızı alır ama kullanıcılarınızın güvenliğini ve deneyimini kökten değiştirir. Otomatik yenileme betiğini kurduktan sonra sertifikayla bir daha uğraşmanız gerekmez. Bir sonraki adımda kullanıcılarınızın IP adreslerini korumak için cloaking ile IP gizleme yazımızı okuyabilirsiniz.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Let's Encrypt sertifikası ücretsiz mi?
Evet. Let's Encrypt ücretsiz ve otomatik yenilenebilen sertifikalar sunar; sertifikalar 90 gün geçerlidir.
Sertifika yenilenince sunucuyu yeniden başlatmam gerekir mi?
Hayır. Oper olarak /REHASH -tls komutu veya rehash ile yeni sertifika kullanıcılar düşmeden yüklenebilir.
Sertifika neden IRC sunucu adıyla eşleşmeli?
İstemciler bağlandıkları adla sertifikadaki adı karşılaştırır. Eşleşmezse güvenlik uyarısı gösterir veya bağlantıyı reddeder.


