Centos Web Panel sunucu üzerine manuel olarak SSL kurulumu yaparken dikkat edilmesi gereken nokta CA sertifikasını panele eklerken asıl sertifikanın da CA sertifikasının üstünde belirtilmesidir. Aşağıdaki örnekte işlemleri daha detaylı olarak anlatayım:

Sunucu erişimi sonrasında Web Servers » SSL Sertificates » Manual Install adımlarını takip ederek SSL kurulumunu yapacağımız sayfaya giriyoruz, kullanıcı adı ve o kullanıcıya ait alan adını seçiyoruz. Sonrasında Certificate bölümüne sertifikamızı, Private Key bölümüne eğer private key otomatik gelmediyse private keyimizi, Certificate Authority bölümüne de CA sertifikasını aşağıdaki gibi ekliyoruz. Sonrasında Validate Certificate ve Save butonlarına tıklayarak kurulumu tamamlıyoruz, aktifleştirmek için de web servislerini yeniden başlatıyoruz.

-----BEGIN CERTIFICATE-----
Certificate bölümüne eklemiş olduğumuz sertifika
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CA sertifikanız
-----END CERTIFICATE-----

CA sertifikasını eklerken asıl sertifikayı da başına eklemezsek nginx servisi sertifika ile private key bilgisinin uyuşmadığını belirterek pasif hale geliyor ve web erişimi kesiliyor. O yüzden bu detay önemli.

Centos Web Panel de kurulan SSL sertifikalarının dosya yolları aşağıdaki gibi:

  •  /etc/pki/tls/private/ dizininde private key dosyaları bulunmakta. alanadı.com.key isminde tutulmaktadır.
  • /etc/pki/tls/certs/ dizininde sertifika dosyaları bulunmakta, CA sertifikası da bu dizinde bulunmakta.
    • Alan adina ait sertifika alanadı.com.cert isminde tutulmaktadır.
    • CA sertifikası ise alanadı.com.bundle isminde tutulmaktadır.

Lets Encrypt ile 4096 bit wildcard SSL kurulumu için Acme.sh scriptini kullanacağız. Centos Web Panel içerisinde varsayılan olarak bu script kurulu gelmektedir. Sunucu üzerindeki Lets Encrypt modülü de bu script aracılığı ile sertifika kurulumu yapmaktadır. Daha önceki konumda Plesk sunucuya kurulumdan bahsetmiştim, Centos Web Panel için de aynı mantıkla işlem gerçekleştireceğiz. Cloudflare DNS eklentisi ile işlem gerçekleştireceğiz. Aşağıdaki bağlantıdan Plesk ile ilgili konuya erişebilirsiniz.
https://bln.li/plesk-letsencrypt

Öncelikle manuel olarak kurulum yapmamız gerekiyor ki Centos Web Panel üzerinde alan adına ait conf uzantılı sertifika bilgilerini tutan kayıt dosyaları oluştursun. Bu işlemi sunucu üzerindeki Lets Encrypt modülü ile de gerçekleştirebilirsiniz. Ancak bu modül 2048 bit sertifika kuracaktır. Bu işlemden sonra sunucuya SSH erişmi gerçekleştirerek aşağıdaki komutu çalıştırmamız gerekmekte.

sh /root/.acme.sh/acme.sh --issue -d *.alanadınız.com -d alanadınız.com -k 4096 --dns dns_cf --server https://acme-v02.api.letsencrypt.org/directory --force

SSL sertifikanızın oluşturulabilmesi için Cloudflare üzerinde bir TXT DNS kaydı oluşturularak doğrulama gerçekleştirilmektedir. DNS kaydının oluşturulabilmesi için /root/.acme.sh/account.conf içerisinde aşağıdaki bilgilerin eklenmiş olması gerekmektedir.

SAVED_CF_Email='cloudflare eposta adresiniz'
SAVED_CF_Key='apikeyiniz'

Doğrulama sonrasında sertifikanız /root/.acme.sh/*.alanadınız.com dizini altında oluşturulmuş olacak. Bu dizindeki dosyalar aşağıdaki gibi:

  • ca.cer CA sertifikası
  • fullchain.cer Sertifika ile CA sertifikasının birlikte bulunduğu dosya
  • *.alanadınız.com.cer Sertifika dosyanız
  • *.alanadınız.com.csr Sertifikanın oluşturma işleminde kullanılan sertifika istek kodu (CSR)
  • *.alanadınız.com.key Sertifikanızın private key dosyası

Sertifika dosyalarının yolunu bildiğimize göre bu dosyaları daha önceki kurmuş olduğumuz sertifikanın üzerine yazabiliriz.

cat /root/.acme.sh/*.alanadınız.com/*.alanadınız.com.key > /etc/pki/tls/private/alanadınız.com.key
cat /root/.acme.sh/*.alanadınız.com/*.alanadınız.com.cer > /etc/pki/tls/certs/alanadınız.com.cert
cat /root/.acme.sh/*.alanadınız.com/fullchain.cer > /etc/pki/tls/certs/alanadınız.com.bundle

Her alt alan adı için bu işlemi aynı şekilde tekrarlamamız gerekmekte. İlk başta yaptığımız gibi bir sertifika kurarak gerekli konfigurasyon dosyalarının oluşturulması ardından bir üstteki komutu alt alan adı için düzenleyerek kurulumu gerçekleştirebiliriz.

cat /root/.acme.sh/*.alanadınız.com/*.alanadınız.com.key > /etc/pki/tls/private/alt.alanadınız.com.key
cat /root/.acme.sh/*.alanadınız.com/*.alanadınız.com.cer > /etc/pki/tls/certs/alt.alanadınız.com.cert
cat /root/.acme.sh/*.alanadınız.com/fullchain.cer > /etc/pki/tls/certs/alt.alanadınız.com.bundle

Bu kodları aşağıdaki gibi şekilde düzenleyerek script haline getirebilir ve bunun sayesinde herdefasında aynı komutları yazmaktan kurtulmuş oluruz.

sh /root/.acme.sh/acme.sh --issue -d *.$1 -d $1 -k 4096 --dns dns_cf --server https://acme-v02.api.letsencrypt.org/directory --force

cat /root/.acme.sh/*.$1/*.$1.key > /etc/pki/tls/private/$1.key
cat /root/.acme.sh/*.$1/*.$1.cer > /etc/pki/tls/certs/$1.cert
cat /root/.acme.sh/*.$1/fullchain.cer > /etc/pki/tls/certs/$1.bundle

cat /root/.acme.sh/*.$1/*.$1.key > /etc/pki/tls/private/alt.$1.key
cat /root/.acme.sh/*.$1/*.$1.cer > /etc/pki/tls/certs/alt.$1.cert
cat /root/.acme.sh/*.$1/fullchain.cer > /etc/pki/tls/certs/alt.$1.bundle

Bu kodları letsencrypt.sh ismiyle kaydedip sonrasında da sh letsencrypt.sh alanadınız.com komutu ile çalıştırarak sertifikanızı yeniden oluşturabilir ve kurulumunu gerçekleştirebilirsiniz. Bu şekilde cronjob tanımlayarak zamanlı olarak her ay çalıştırabilir ve sertifikanızı her ay yenilemiş olursunuz.