Android

Debian 9'u şifreleyip apache'yi güvenli hale getirin

Поднимаем Debian сервер для Python/Django — установка и настройка с нуля. Как настроить сервер?

Поднимаем Debian сервер для Python/Django — установка и настройка с нуля. Как настроить сервер?

İçindekiler:

Anonim

Şifreleyelim, Internet Security Research Group (ISRG) tarafından oluşturulan bir sertifika yetkilisidir. Manuel sertifika oluşturma, doğrulama, kurulum ve yenilemeyi ortadan kaldırmak için tasarlanmış tam otomatik bir işlemle ücretsiz SSL sertifikaları sağlar.

Let's Encrypt tarafından verilen sertifikalar, veriliş tarihinden itibaren 90 gün geçerlidir ve bugün tüm büyük tarayıcılar tarafından güvenilmektedir.

Bu eğitici, Debian 9'daki certbot aracını kullanarak ücretsiz bir Let's Encrypt alma işlemi boyunca size rehberlik edecektir. Ayrıca Apache'nin yeni SSL sertifikasını kullanacak ve HTTP / 2'yi etkinleştirecek şekilde nasıl yapılandırılacağını göstereceğiz.

Ön şartlar

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

  • Sudo ayrıcalıklarına sahip bir kullanıcı olarak oturum açın. Sunucunuzun genel sunucu IP'sini işaret eden bir alan adına sahip olun. Ornek.com'u kullanacağız. Alan adınız için bir apache sanal ana bilgisayarı. Nasıl oluşturacağınızla ilgili ayrıntılar için bu talimatları takip edebilirsiniz.

Certbot'u yükle

Certbot, Let's Encrypt SSL sertifikalarını alma ve yenileme görevlerini otomatikleştirebilen tam özellikli ve kullanımı kolay bir araçtır. Certbot paketi, varsayılan Debian depolarına dahil edilmiştir.

Paketler listesini güncelleyin ve aşağıdaki komutları kullanarak certbot paketini yükleyin:

sudo apt update sudo apt 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.

Yeni bir 2048 bit DH parametre kümesi oluşturmak için:

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 adı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 Apache sunucusu için yazılabilir yapar.

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

Kod çoğaltılmasını önlemek için aşağıdaki iki yapılandırma snippet'ini oluşturun:

/etc/apache2/conf-available/letsencrypt.conf

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS /etc/apache2/conf-available/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

Yukarıdaki snippet, Cipherli.st tarafından önerilen yongalayıcıları kullanıyor, OCSP Zımbalama, HTTP Sıkı Aktarım Güvenliği'ni (HSTS) etkinleştiriyor ve güvenlik odaklı birkaç HTTP üstbilgisini zorunlu kılıyor.

Yapılandırma dosyalarını etkinleştirmeden önce, aşağıdakileri yaparak mod_ssl ve mod_headers etkinleştirildiğinden emin olun:

sudo a2enmod ssl sudo a2enmod headers

Sitelerinizi daha hızlı ve daha sağlam hale getirecek HTTP / 2 modülünü etkinleştirin:

sudo a2enmod

Aşağıdaki komutları çalıştırarak SSL yapılandırma dosyalarını etkinleştirin:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

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

sudo systemctl reload apache2

SSL sertifika dosyalarını edinmek için webroot eklentisiyle Certbot aracını kullanın:

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: IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2019-01-17. 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 lose your account credentials, you can recover through e-mails sent to [email protected]. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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, etki alanı sanal ana bilgisayar yapılandırmanızı aşağıdaki gibi düzenleyin:

/etc/apache2/sites-available/example.com.conf

ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration

Yukarıdaki yapılandırma ile HTTPS'yi zorluyoruz ve www'den www olmayan sürüme yönlendiriyoruz. Yapılandırmayı ihtiyaçlarınıza göre ayarlamak için serbest bırakın.

Değişikliklerin etkili olması için Apache hizmetini yeniden yükleyin:

sudo systemctl reload apache2

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 süresi dolmadan otomatik olarak yenilemek için, certbot paketi günde iki kez çalışan ve herhangi bir sertifikayı sona erme tarihinden 30 gün önce otomatik olarak yenileyecek bir cronjob oluşturur.

Sertifika yenilendikten sonra Apache hizmetini de yeniden yüklememiz gerekir. /etc/cron.d/certbot dosyasına --renew-hook "systemctl reload apache2" /etc/cron.d/certbot aşağıdaki gibi görünecek şekilde /etc/cron.d/certbot :

/etc/cron.d/certbot

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 apache2"

Yenileme işlemini test etmek için certbot - --dry-run anahtarını kullanın:

sudo certbot renew --dry-run

Herhangi bir hata yoksa, yenileme işleminin başarılı olduğu anlamına gelir.

Sonuç

Bu öğreticide, alanınız için SSL sertifikaları almak üzere Let's Encrypt istemci sertifikasını kullandınız. Kod çoğaltılmasını önlemek için Apache snippet'leri de oluşturdunuz ve Apache'yi sertifikaları kullanacak şekilde yapılandırdınız. Eğiticinin sonunda, otomatik sertifika yenilemesi için bir cronjob ayarladınız.

apache debian certbot ssl şifreleyelim

Bu yazı Debian 9 serisine LAMP Stack Nasıl Kurulur?

Bu serideki diğer gönderiler:

• Debian 9 Apache Nasıl Kurulur • Debian 9 PHP Nasıl Kurulur • Debian 9 Apache Sanal Sunucu Nasıl Kurulur • Debian 9 MariaDB Nasıl Kurulur • Debian 9 Şifreleyelim