GNU/Linux >> Belajar Linux >  >> Linux

Cara Menginstal Nginx dengan Lets encrypt dan mendapatkan A+ dari SSLLabs Test

Dalam tutorial ini, saya akan menunjukkan kepada Anda langkah demi langkah cara menginstal dan mengkonfigurasi server web Nginx dengan sertifikat Letsencrypt. Panduan ini akan memberi tahu Anda tentang menginstal server web Nginx, menginstal alat mari mengenkripsi, membuat sertifikat SSL memungkinkan mengenkripsi, mengonfigurasi host virtual nginx dengan SSL, dan membuat konfigurasi SSL tambahan untuk mendapatkan A+ dari SSL uji SSL Labs.

Prasyarat

  • Server Linux - Ubuntu 18.04 atau CentOS 7.5
  • Hak istimewa root

Apa yang akan kita lakukan?

  1. Instal Server Web Nginx
  2. Konfigurasikan UFW/Firewalld Firewall
  3. Instal mari mengenkripsi dan Membuat Sertifikat SSL
  4. Konfigurasi SSL Aman
  5. Konfigurasi Nginx Virtual Host dengan SSL
  6. Pengujian

Langkah 1 - Instal Server Web Nginx

Dalam tutorial ini, kami akan memandu Anda untuk menginstal dan mengkonfigurasi server web Nginx dengan Letsencrypt di kedua server Linux - Ubuntu 18.04 dan CentOS 7.5.

Di Ubuntu 18.04.

Perbarui repositori lalu instal nginx menggunakan perintah apt di bawah ini.

sudo apt update
sudo apt install nginx -y

Pada CentOS 7.5.

Instal repositori EPEL ke sistem CentOS dan instal Nginx menggunakan perintah yum.

sudo yum install epel-release -y
sudo yum install nginx -y

Setelah penginstalan selesai, mulai layanan Nginx dan aktifkan untuk diluncurkan setiap kali sistem boot.

systemctl start nginx
systemctl aktifkan nginx

Server web Nginx sekarang terinstal, dan berjalan pada port HTTP default 80. Periksa menggunakan perintah netstat di bawah ini.

netstat -plntu

Langkah 2 - Konfigurasikan Firewall UFW - Firewalld

Disarankan untuk menyalakan Firewall di server dan membuka port tertentu sesuai kebutuhan. Pada langkah ini, kami akan menunjukkan cara membuka port SSH, HTTP, dan HTTPS pada server Linux Ubuntu 18.04 menggunakan firewall UFW, dan Firewalld pada sistem CentOS 7.5.

Di Ubuntu 18.04 - UFW Firewall

Sebelum mengaktifkan UFW Firewall pada sistem Ubuntu, pastikan port SSH diaktifkan pada daftar konfigurasi firewall.

Tambahkan port layanan SSH ke konfigurasi firewall menggunakan perintah ufw lalu aktifkan layanan firewall UFW.

ufw izinkan ssh
ufw aktifkan

Sekarang tambahkan layanan HTTP dan HTTPS.

ufw izinkan http
ufw izinkan https

Port layanan SSH, HTTP, dan HTTPS telah ditambahkan ke daftar layanan Firewall UFW, periksa apakah menggunakan perintah di bawah ini.

status ufw

Di CentOS 7.5 - Firewalld

Sebelum menambahkan port dan layanan ke firewelld, pastikan layanan firewalld aktif dan berjalan.

Mulai layanan firewalld dan aktifkan untuk diluncurkan setiap kali sistem boot.

systemctl start firewalld
systemctl aktifkan firewalld

Catatan:

  • Layanan SSH akan diaktifkan secara default pada daftar layanan Firewald.

Sekarang tambahkan layanan HTTP dan HTTPS menggunakan perintah firewall-cmd di bawah ini.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent

Muat ulang konfigurasi firewalld dan periksa daftar layanan.

firewall-cmd --reload
firewall-cmd --list-services

Dan Anda akan mendapatkan layanan SSH, HTTP, dan HTTPS dalam daftar.

Langkah 3 - Instal Letsencrypt dan Hasilkan Sertifikat

Pada langkah ini, kita akan menginstal alat letsencrypt, dan membuat sertifikat SSL yang kuat Letsencrypt menggunakan perintah cerbot.

Di Ubuntu 18.04

Instal paket letsencrypt menggunakan perintah apt di bawah ini.

sudo apt install letsencrypt -y

Di CentOS 7.5

Sekarang instal paket letsencrypt pada CentOS 7 menggunakan perintah yum di bawah ini.

sudo yum install certbot -y

Setelah instalasi selesai, kita akan membuat konfigurasi baru yang akan digunakan untuk menghasilkan file sertifikat SSL.

Di Ubuntu 18.04

Buka direktori konfigurasi '/etc/nginx' dan buat file konfigurasi baru 'cerbot.conf' di bawah direktori 'snippets'.

cd /etc/nginx/
vim snippets/certbot.conf

Tempelkan konfigurasi berikut di sana.

 lokasi /.well-known { alias /var/www/html/.well-known; }

Simpan dan keluar.

Sekarang edit file host virtual Nginx default.

vim sites-available/default

Tambahkan konfigurasi berikut di bawah blok 'server {..}'.

 include snippets/certbot.conf;

Simpan dan keluar.

Pada CentOS 7.5

Buka direktori konfigurasi '/etc/nginx' dan buat file konfigurasi baru 'certbot.conf' di bawah direktori 'default.d'.

cd /etc/nginx/
vim default.d/certbot.conf

Tempelkan konfigurasi di bawah.

 lokasi /.well-known { alias /usr/share/nginx/html/.well-known; }

Simpan dan keluar.

Sekarang uji konfigurasi nginx dan pastikan tidak ada kesalahan, lalu restart layanan nginx.

nginx -t
systemctl restart nginx

Selanjutnya, buat sertifikat SSL letsencrypt menggunakan perintah certbot.

Di Ubuntu 18.04

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [dilindungi email] -w /var/www/html -d hakase-labs.io 

Di CentOS 7.5

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [dilindungi email] -w /usr/share/nginx/html -d hakase-labs .io

Catatan:

  • Kami akan menentukan ukuran kunci RSA untuk domain kami menjadi '4096', dan kami akan menentukan metode otentikasi ke direktori root web default '/var/www/html' pada sistem Ubuntu, dan '/usr/share/ nginx/html' untuk sistem CentOS 7.

Setelah selesai, Anda akan mendapatkan semua file sertifikat SSL untuk nama domain di direktori '/etc/letsencrypt/live'.

Untuk mendapatkan keamanan tambahan, kami akan membuat kunci DHPARAM '4096' menggunakan perintah OpenSSL seperti yang ditunjukkan di bawah ini.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

Kunci DHPARAM telah dibuat ke direktori '/etc/nginx'.

Langkah 4 - Konfigurasi SSL

Pada langkah ini, kita akan menentukan konfigurasi SSL untuk server web Nginx. Kami akan membuat konfigurasi baru 'ssl.conf' yang berisi keamanan konfigurasi SSL tweak yang difokuskan untuk server web Nginx.

Di Ubuntu 18.04

Buka direktori konfigurasi '/etc/nginx/' dan buat konfigurasi SSL baru 'ssl.conf' di bawah direktori 'snippet'.

cd /etc/nginx/
vim snippets/ssl.conf

Pada CentOS 7.5

Buka direktori konfigurasi '/etc/nginx/' dan buat konfigurasi SSL baru 'ssl/conf' di bawah direktori 'default.d'.

cd /etc/nginx/
vim default.d/ssl.conf

Tempelkan konfigurasi SSL berikut di sana.

# Tentukan versi TLSssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;# Rekomendasi ciphersuites dari chiper.li# Gunakan chipersuite ini untuk mendapatkan 100 poin tes SSLabs# Beberapa perangkat tidak akan mendukung#ssl_ciphers "ECDHE- RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";# Mozilla Ciphersuits";# Mozilla Ciphersuits Rekomendasi# Gunakan ini untuk semua perangkat yang mendukungssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDHE-ECDSA -GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256';# Gunakan kunci DHPARAM dan kurva ECDH>=256bitssl_ecdh_curve secp384r1;ssl_dhparam /etc/nginx/dhparam.pem;server_tokens off;ssl_session_timeout 1d;ssl_session_cache shared:SSL:50m;ssl_session-#Transport-Transport Anda telah menonaktifkan Keamanan HTTP; ubdomain situs Anda,# hati-hati menggunakan opsi 'includeSubdomains'add_header Strict-Transport-Security "max-age=63072000; sertakanSubdomain; preload";# Aktifkan Stapling OSCP untuk server web Nginx# Jika Anda menggunakan SSL dari Letsencrypt,# gunakan 'chain.pem' certificatessl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /etc/letsencrypt/live/hakase-labs.io/ chain.pem;resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 5s;# Proteksi XSS untuk server web Nginxadd_header X-Frame-Options DENY;add_header X-XSS-Protection "1; mode=block";add_header X-Content-Type-Options nosniff;add_header X-Robots-Tag none;

Simpan dan keluar.

Catatan:

  • Tentukan versi TLS untuk situs, hanya terima TLSv1 TLSv1.1 TLSv1.2.
  • Tentukan ciphersuite SSL, dan disarankan untuk menggunakan ciphersuite SSL dari saran Mozilla untuk mendapatkan kompatibilitas semua perangkat.
  • Aktifkan HSTS, Stapel OSCP, dan tambahkan perlindungan XSS.

Langkah 5 - Konfigurasikan Nginx Virtual Host dengan SSL

Pada langkah ini, kita akan membuat file host virtual untuk nama domain. Kami akan membuat virtual host baru, domain bernama hakase-labs.io, dan direktori root webnya akan ditempatkan di direktori '/var/www/site01'.

Buat direktori baru '/var/www/site01' dan buat file 'index.html' di dalamnya.

mkdir -p /var/www/site01
echo '

Nginx - Letsencrypt - A+

'> /var/www/site01/index.html

Sekarang masuk ke direktori konfigurasi '/etc/nginx' dan buat file host virtual baru bernama 'hakase-labs.io' untuk ubuntu, dan 'hakase-labs.conf' untuk sistem CentOS 7.

Di Ubuntu 18.04

cd /etc/nginx/
vim sites-available/hakase-labs.io

Di CentOS 7.5

cd /etc/nginx/
vim conf.d/hakase-labs.conf

Tempelkan contoh konfigurasi virtual host Nginx berikut di sana.

server { dengarkan 80; dengarkan [::]:80; server_name hakase-labs.io; return 301 https://$host$request_uri;}server { dengarkan 443 ssl http2; dengarkan [::]:443 ssl http2; root /var/www/site01; indeks index.html index.php index.htm; server_name hakase-labs.io; error_log /var/log/nginx/hakase-error.log memperingatkan; ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem; #SSL Konfigurasi termasuk snippets/ssl.conf; lokasi ~ /.well-known { izinkan semua; } lokasi / { try_files $uri $uri/ =404; } lokasi =/favicon.ico { log_not_found off; access_log off; } lokasi =/robots.txt { izinkan semua; log_not_ditemukan mati; access_log off; } lokasi ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { kedaluwarsa maks; log_not_ditemukan mati; }}

Simpan dan keluar.

Catatan:

  • Ubah 'include snippets/ssl.conf;' garis. Jika Anda menggunakan Ubuntu, biarkan default. Dan jika Anda menggunakan CentOS, ubah direktori menjadi 'default.d/ssl.conf'

Hanya di Sistem Ubuntu

Aktifkan file host virtual baru dan uji konfigurasi, dan pastikan tidak ada kesalahan.

ln -s /etc/nginx/sites-available/hakase-labs.io /etc/nginx/sites-enabled/
nginx -t

Sekarang restart layanan nginx.

systemctl restart nginx

Host virtual baru dengan HTTPS diaktifkan dan konfigurasi SSL tambahan telah dibuat.

Periksa menggunakan perintah netstat dan Anda akan mendapatkan port HTTPS 443 pada daftar.

netstat -plntu

Langkah 6 - Pengujian

Buka browser web Anda dan ketik nama domain Anda, milik saya adalah 'http://hakase-labs.io'.

Dan Anda akan diarahkan ke koneksi HTTPS.

Sekarang buka situs SSL Test 'https://www.ssllabs.com/ssltest/' dan ketik nama domain Anda sendiri, lalu tunggu untuk mendapatkan hasilnya.

Berikut adalah hasil saya menggunakan 'Rekomendasi Mozilla Ciphersuite'.

Dan berikut adalah hasil saya menggunakan 'Rekomendasi Cipher.li Ciphersuite'.

Anda akan melihat semua hasil memiliki hasil 'A+', dan hanya berbeda pada 'Kekuatan Cipher' pada rekomendasi Mozilla dan Rekomendasi Cipherli.st.

Untuk mengecek OSCP Stapling dan HSTS di server, scroll halaman hasil tes dan Anda akan mendapatkan hasil seperti di bawah ini.

Jika Anda ingin memeriksa Stapling OSCP dari baris perintah, periksa menggunakan perintah berikut.

echo KELUAR | openssl s_client -connect hakase-labs.io:443 -status 2> /dev/null | grep -A 17 'Tanggapan OCSP:' | grep -B 17 'Pembaruan Berikutnya'

Untuk pengujian HSTS, periksa menggunakan perintah curl di bawah ini.

curl -s -D- https://hakase-labs.io | grep -i Ketat

Instalasi dan konfigurasi server web Nginx dengan SSL Letsencrypt serta mendapatkan A+ dari uji SSLabs telah berhasil diselesaikan.

Referensi

  • https://community.letsencrypt.org/
  • https://mozilla.github.io/
  • https://cipherli.st/

Linux
  1. Cara Menginstal Nextcloud dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  2. Cara Menginstal Magento 2 dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS

  3. Cara Menginstal Shopware dengan NGINX dan Mari mengenkripsi di Ubuntu 18.04 LTS

  1. Cara Menginstal Shopware dengan NGINX dan Mengenkripsi di CentOS 7

  2. Cara Menginstal Shopware dengan NGINX dan Lets Encrypt di Fedora 30

  3. Cara Menginstal WonderCMS dengan Nginx dan Mengenkripsi SSL di CentOS 7

  1. Cara Instal Pico CMS dengan Nginx dan Lets Encrypt di CentOS 7

  2. Cara Install Grav CMS dengan Nginx dan Lets Encrypt di Ubuntu 18.04 LTS

  3. Cara Menginstal WordPress dengan Nginx dan Mengenkripsi SSL di CentOS 8