Android

Centos 7'yi şifreleyelim ile güvenli nginx

Установка и настройка CentOS в VirtualBox

Установка и настройка CentOS в VirtualBox

İçindekiler:

Anonim

Let's Encrypt, Internet Security Research Group (ISRG) tarafından geliştirilen ücretsiz ve açık bir sertifika yetkilisidir. Let's Encrypt tarafından verilen sertifikalara bugün neredeyse tüm tarayıcılar tarafından güvenilmektedir.

Bu eğitimde, Centgin 7'de certbot aracını kullanarak Nginx'inizi Let's Encrypt ile nasıl güvenceye alacağınız hakkında adım adım talimatlar vereceğiz.

Ön şartlar

Bu eğiticiye devam etmeden önce aşağıdaki önkoşulları karşıladığınızdan emin olun:

  • Genel sunucu IP'nizi gösteren bir alan adınız var. Bu öğreticide example.com kullanacağız. CentOS 7'de Nginx Nasıl Kurulur'u izleyerek EPEL deposunu etkinleştirip Nginx'i yüklediniz.

Certbot'u yükle

Certbot, Let's Encrypt SSL sertifikalarını almak ve web sunucularını yapılandırmak için görevleri otomatikleştirebilen kullanımı kolay bir araçtır.

Certbot paketini EPEL veri havuzundan çalıştırmak için:

sudo yum install certbot

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

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 İsterseniz boyutu 4096 bite kadar değiştirebilirsiniz, ancak bu durumda, sistem entropisine bağlı olarak üretim 30 dakikadan fazla sürebilir.

Let's Encrypt SSL sertifikası edinme

Alanımız için bir SSL sertifikası almak için, ${webroot-path}/.well-known/acme-challenge dizininde istenen alanı 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

Kodun kopyalanmasını önlemek için, tüm Nginx sunucu blok dosyalarımıza ekleyeceğimiz 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:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; 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=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

Yukarıdaki pasaj, 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

Artık Certbot'u webroot eklentisiyle çalıştırabilir ve alan adınız için SSL sertifika dosyalarını şu şekilde alabilirsiniz:

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

SSL sertifikası başarıyla alınırsa, certbot aşağıdaki mesajı yazdırı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 2018-06-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot 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

Otomatik yenileme SSL sertifikasını şifreleyelim

Şifreleme sertifikaları 90 gün geçerlidir. Sertifikaların geçerlilik süreleri dolmadan otomatik olarak yenilenmesi için günde iki kez çalışacak ve sona erme tarihinden 30 gün önce sertifikaları otomatik olarak yenileyecek bir cronjob oluşturacağız.

Yeni bir cronjob oluşturmak için crontab komutunu çalıştırın:

sudo crontab -e

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

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -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ı indirmek için certbot Let's Encrypt istemcisini kullandınız. Ayrıca kodu çoğaltmamak için Nginx snippet'leri oluşturdunuz ve Nginx'i sertifikaları kullanacak şekilde yapılandırdınız. Eğiticinin sonunda otomatik sertifika yenilemesi için bir cronjob ayarladınız.

nginx centos certbot ssl şifreleyelim

Bu yazı, CentOS 7 serisine LEMP Yığını Yükle'nin bir parçasıdır.

Bu serideki diğer gönderiler:

• CentOS 7'ye Nginx Kurulumu • CentOS 7'de Şifreleyelim ile Güvenli Nginx • CentOS 7'ye MariaDB Kurma • CentOS 7'ye PHP 7 Kurulumu • CentOS 7'ye Nginx Sunucu Bloklarını Kurma