İletişim
UnrealIRCd

UnrealIRCd İçin Let's Encrypt SSL/TLS Sertifikası Kurulumu

· 5 dk okuma

İçindekiler
  1. Neden Geçerli Bir Sertifika?
  2. Ön Koşullar
  3. 1. Certbot Kurulumu
  4. 2. Sertifika Almak
  5. 3. Dosyaları UnrealIRCd'ye Taşımak
  6. 4. Sertifikayı Yüklemek
  7. 5. Otomatik Yenileme
  8. 6. Sertifika Yenilemenin Sunucu Bağlantılarına Etkisi
  9. Sertifikayı Doğrulamak
  10. Sık Karşılaşılan Sorunlar
  11. Birden Fazla Sunucuda Aynı Sertifika
  12. Sertifika Sona Erme Tarihini İzlemek
  13. TLS Ayarlarını Sıkılaştırmak
  14. Kullanıcılara Duyuru
  15. 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?

Ön Koşullar

  1. Sunucunuz için gerçek bir alan adı (ör. irc.ornekagi.net) ve bu adın sunucunuzun IP'sini gösteren DNS kaydı,
  2. Sunucuda root veya sudo yetkisi (certbot kurulumu için),
  3. 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:

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:

İ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ı veriyorAra 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üyorDeploy hook çalışmamış; rehash -tls komutunu kontrol edin
Sunucu linkleri koptuAnahtar 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ğlan

Sı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.