RHEL 9/8'de Nginx için Let's Encrypt SSL Sertifikasını yükleyin


Bu makalede, RHEL'de Nginx web sunucusu HTTP işlemlerinin güvenliğini sağlamak için kullanacağımız Let's Encrypt Sertifika Yetkilisi'nden ücretsiz olarak alınan bir SSL/TLS sertifikasını nasıl oluşturup kuracağınız konusunda size rehberlik edeceğiz. Fedora, Rocky Linux ve AlmaLinux gibi RHEL tabanlı dağıtımlar.

RHEL ve RHEL tabanlı dağıtımlara Let's Encrypt for Apache'yi yüklemek istiyorsanız aşağıdaki kılavuzu izleyin:

Gereksinimler

  • Sunucunun genel IP Adresini işaret edecek geçerli A DNS kayıtlarına sahip kayıtlı bir alan adı.
  • Nginx web sunucusu, SSL etkin ve Sanal Ana Bilgisayarlar etkinleştirilmiş olarak yüklenmiştir (yalnızca birden fazla alan adı veya alt alan adı barındırma için).

Test Ortamı Kurulumumuz

Adım 1: Nginx Web Sunucusunu RHEL Sistemlerine Kurun

1. İlk adımda, Nginx arka plan programı kurulu değilse, Nginx web sunucusunu Epel depolarından kurmak için aşağıdaki komutları root ayrıcalıklarıyla verin.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Not: Fedora kullanıcılarının epel deposunu yüklemelerine gerek yoktur.

Adım 2: Let's Encrypt'i (Certbot) RHEL Sistemlerine yükleyin

2. Let's Encrypt istemcisini Linux sistemlerine kurmanın en hızlı yöntemi, epel deposundan certbot ve python3-certbot-nginx paketlerini yüklemektir. .


dnf install certbot python3-certbot-nginx

3. certbot istemcisi yüklendikten sonra, aşağıdaki komutu çalıştırarak Let's Encrypt yazılımının yüklü sürümünü doğrulayın:


certbot --version

certbot 1.30.0

3. Adım: Nginx için Ücretsiz Let's Encrypt SSL Sertifikası Alın

4. Nginx için ücretsiz bir SSL/TLS Sertifikası alma işlemi, Let's Encrypt Standalone kullanılarak manuel olarak gerçekleştirilecektir. eklenti.

Bu yöntem, Let's Encrypt istemcisinin sunucunun kimliğini doğruladığı ve sertifikalar oluşturduğu süre boyunca 80 bağlantı noktasının boş olmasını gerektirir.

Dolayısıyla, Nginx zaten çalışıyorsa, aşağıdaki komutla arka plan programını durdurun ve 80 numaralı bağlantı noktasının artık ağ yığınında kullanılmadığını doğrulamak için ss yardımcı programını çalıştırın.


service nginx stop
systemctl stop nginx
ss -tln

5. Artık certbot komutunu --nginxLet's Encrypt'ten ücretsiz bir SSL Sertifikası almanın zamanı geldi. > Nginx etki alanları için Let's Encrypt güvenlik sertifikasının alınmasını ve yapılandırılmasını başlatmak için.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Son olarak, eğer her şey olması gerektiği gibi giderse, bash terminalinizde bir tebrik bilgi mesajı gösterilecektir. Mesaj ayrıca sertifikanın süresinin ne zaman dolacağını da görüntüleyecektir.

Adım 4: Nginx'te Let's Encrypt SSL Sertifikasını Kurun

9. Artık ücretsiz bir SSL/TLS Sertifikasına sahip olduğunuza göre, alan adınızın kullanabilmesi için onu Nginx web sunucusuna yüklemenin zamanı geldi.

Tüm yeni SSL sertifikaları, alan adınızın adını taşıyan bir dizinin altındaki /etc/letsencrypt/live/ dizinine yerleştirilir. Etki alanınız için verilen Sertifika dosyalarını listelemek ve tanımlamak için ls komutunu kullanın.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Sertifika dosyalarını Nginx'e yüklemek ve SSL'yi etkinleştirmek için /etc/nginx/nginx.conf dosyasını düzenlemek üzere açın ve aşağıdaki ifadeleri son dinleme satırından sonra ekleyin. sunucu bloğu. Aşağıdaki çizimi kılavuz olarak kullanın.

vi /etc/nginx/nginx.conf

Nginx SSL bloğu alıntısı:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

SSL sertifikalarının alan adı dizesini kendi alanınızla eşleşecek şekilde değiştirin.

11. Son olarak Nginx hizmetini yeniden başlatın ve alanınızı https://alaniniz adresindeki HTTPS Protokolü aracılığıyla ziyaret edin. Sayfa herhangi bir sertifika hatası olmadan düzgün bir şekilde yüklenmelidir.

systemctl restart nginx
service nginx restart

12. SSL/TLS sertifikasını ve doğruluğunu doğrulamak için aşağıdaki bağlantıyı ziyaret edin:

https://www.ssllabs.com/ssltest/analyze.html 

13. Sunucunuzun zayıf bir DH anahtar değişimini desteklediğine ve genel olarak B notuna sahip olduğuna dair bir bildirim alırsanız, yeni bir < oluşturun. Aşağıdaki komutları çalıştırarak sunucunuzu Logjam saldırısına karşı korumak için /etc/nginx/ssl/ dizinine Strong>Diffie-Hellman şifresini ekleyin.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

Bu örnekte 4096 bitlik bir anahtar kullandık; bu anahtarın oluşturulması aslında uzun sürüyor ve sunucunuza ve SSL anlaşmasına fazladan yük getiriyor.

Bir anahtarı bu kadar uzun süre kullanmaya açık bir ihtiyaç yoksa ve paranoyak değilseniz, 2048 bitlik bir anahtarla güvende olmalısınız.

14. DH anahtarı oluşturulduktan sonra Nginx yapılandırma dosyasını açın ve DH anahtarını eklemek için ssl_ciphers satırının sonrasına aşağıdaki ifadeleri ekleyin ve alan adınızın güvenlik düzeyini A+ notuna yükseltin.

vi /etc/nginx/nginx.conf

Aşağıdaki blok alıntısını Nginx.conf'a ekleyin:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Değişiklikleri uygulamak için Nginx hizmetini yeniden başlatın ve yukarıda belirtilen bağlantıdan önceki sonuç önbelleğini temizleyerek SSL sertifikanızı yeniden test edin.

systemctl restart nginx
service nginx restart

Adım 5: Otomatik Yenileme Nginx Ücretsiz, SSL Sertifikalarını Şifrelemenizi Sağlar

16. Let's Encrypt CA, 90 gün boyunca geçerli olan ücretsiz SSL/TLS sertifikalarını yayınladı. Sertifikalar, webroot eklentisi kullanılarak, web sunucunuzu durdurmadan, aşağıdaki komutları vererek, geçerlilik süresi dolmadan manuel olarak yenilenebilir ve uygulanabilir:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Yukarıdaki komutu çalıştırırken example.com kısmını alanınızla eşleşecek şekilde değiştirdiğinizden emin olun.

17. Sertifikayı süresi dolmadan otomatik olarak yenilemek için, mevcut bir crontab dosyasında cron işi oluşturun.


crontab -e

Sertifikanın geçerlilik süresinin kontrol edilmesi ve yenilenmesi için her gün öğle saatlerinde çalışacak olan aşağıdaki cron işini dosyanın altına ekleyin. --quiet seçeneği, certbot'a çıktı üretmemesini söyler.


0 12 * * * /usr/bin/certbot renew --quiet

Bu kadar! Artık Nginx sunucusu, web sitenizde ücretsiz bir SSL/TLS Let's Encrypt sertifikasıyla güvenli web içeriği sunabilir.