Android

Centos 8'i şifreleyelim ile güvenli nginx

Настройка Gnome в CentOS 8

Настройка Gnome в CentOS 8

İçindekiler:

Anonim

Let's Encrypt, ücretsiz SSL sertifikaları sağlayan Internet Security Research Group (ISRG) tarafından geliştirilen ücretsiz, otomatik ve açık bir sertifika yetkilisidir.

Let's Encrypt tarafından verilen sertifikalara tüm büyük tarayıcılar tarafından güvenilir ve yayın tarihinden itibaren 90 gün geçerlidir.

Bu öğreticide, Nginx'i web sunucusu olarak çalıştıran CentOS 8'e ücretsiz Let's Encrypt SSL sertifikasının nasıl yükleneceği hakkında adım adım talimatlar vereceğiz. Nginx'in SSL sertifikasını kullanmak ve HTTP / 2'yi etkinleştirmek için nasıl yapılandırılacağını da göstereceğiz.

Ön şartlar

Devam etmeden önce aşağıdaki önkoşulları yerine getirdiğinizden emin olun:

  • Genel IP'nizi işaret eden bir alan adınız var. example.com kullanacağız. CentOS sunucunuzda Nginx yüklü. Güvenlik duvarınız 80 ve 443 numaralı bağlantı noktalarındaki bağlantıları kabul edecek şekilde yapılandırıldı.

Certbot'u Yükleme

Certbot, Let's Encrypt SSL sertifikalarını sunucunuzdan HTTPS'den alma ve otomatik olarak etkinleştirme sürecini basitleştiren ücretsiz bir komut satırı aracıdır.

Certbot paketi standart CentOS 8 depolarına dahil değildir, ancak satıcının web sitesinden indirilebilir.

Certbot komut dosyasını /usr/local/bin dizinine indirmek için aşağıdaki wget komutunu root veya sudo kullanıcısı olarak çalıştırın:

sudo wget -P /usr/local/bin

İndirme işlemi tamamlandıktan sonra dosyayı yürütülebilir yapın:

sudo chmod +x /usr/local/bin/certbot-auto

Güçlü Dh (Diffie-Hellman) Grubu Oluşturma

Diffie – Hellman anahtar değişimi (DH), kriptografik anahtarları güvenli olmayan bir iletişim kanalı üzerinden güvenli bir şekilde alışverişi yapma yöntemidir.

Aşağıdaki komutu yazarak yeni bir 2048 bit DH parametre kümesi oluşturun:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Let's Encrypt SSL sertifikası edinme

Etki alanı için bir SSL sertifikası almak için, ${webroot-path}/.well-known/acme-challenge dizininde istenen etki alanını doğrulamak için geçici bir dosya oluşturarak çalışan Webroot eklentisini kullanacağız. Let's Encrypt sunucusu, istenen etki alanının certbot'un çalıştığı sunucuya çözümlendiğini doğrulamak için geçici dosyaya HTTP istekleri gönderir.

Daha basit hale getirmek için .well-known/acme-challenge için tüm HTTP isteklerini /var/lib/letsencrypt .

Aşağıdaki komutlar dizini oluşturur ve Nginx sunucusu için yazılabilir yapar.

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Kod çoğaltılmasını önlemek için, tüm Nginx sunucu blok dosyalarına eklenecek aşağıdaki iki parçacığı oluşturun:

sudo mkdir /etc/nginx/snippets /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; } /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

Yukarıdaki snippet, Mozilla tarafından önerilen yongalayıcıları içerir, OCSP Zımbalama, HTTP Sıkı Aktarım Güvenliği'ni (HSTS) etkinleştirir ve güvenlik odaklı birkaç HTTP üstbilgisini zorlar.

letsencrypt.conf oluşturulduktan sonra, etki alanı sunucusu bloğunu açın ve aşağıda gösterildiği gibi letsencrypt.conf snippet'ini letsencrypt.conf :

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Değişikliklerin etkili olması için Nginx yapılandırmasını yeniden yükleyin:

sudo systemctl reload nginx

Alan adınız için SSL sertifika dosyalarını edinmek üzere certbot aracını webroot eklentisiyle çalıştırın:

sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

İlk kez certbot , araç eksik bağımlılıkları yükler.

SSL sertifikası başarıyla alındığında, certbot aşağıdaki mesajı yazdıracaktır:

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 2020-03-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Artık sertifika dosyalarına sahip olduğunuza göre, alan adı sunucusu bloğunuzu aşağıdaki gibi düzenleyebilirsiniz:

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }

Yukarıdaki yapılandırma ile HTTPS'yi zorluyoruz ve www'yi www olmayan sürüme yönlendiriyoruz.

Son olarak, değişikliklerin etkili olması için Nginx hizmetini yeniden yükleyin:

sudo systemctl reload nginx

Şimdi, https:// kullanarak web sitenizi açın, yeşil bir kilit simgesi göreceksiniz.

Otomatik yenileme SSL sertifikasını şifreleyelim

Şifreleme sertifikaları 90 gün geçerlidir. Sertifikaların geçerlilik süresi dolmadan otomatik olarak yenilenmesi için günde iki kez çalışacak bir cronjob oluşturun ve geçerlilik süresi sona ermeden 30 gün önce tüm sertifikaları otomatik olarak yenileyin.

Yeni bir cronjob oluşturmak için crontab komutunu kullanın:

sudo crontab -e

Aşağıdaki satırı yapıştırın:

0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"

Dosyayı kaydedip kapatın.

Yenileme işlemini test etmek için, certbot komutunu ve ardından --dry-run anahtarını kullanabilirsiniz:

sudo certbot renew --dry-run

Hata yoksa, test yenileme işleminin başarılı olduğu anlamına gelir.

Sonuç

Bu eğitimde, alan adınız için SSL sertifikalarını indirmek için certbot Let's Encrypt istemcisini nasıl kullanacağınızı gösterdik. Ayrıca, kod çoğaltılmasını önlemek için Nginx snippet'leri oluşturduk ve Nginx'i sertifikaları kullanacak şekilde yapılandırdık. Eğiticinin sonunda, otomatik sertifika yenilemesi için bir cronjob kurduk.

Certbot hakkında daha fazla bilgi edinmek için belge sayfalarını ziyaret edin.

nginx centos certbot ssl şifreleyelim