GNU/Linux >> Belajar Linux >  >> Linux

Cara memaksa Apache untuk menggunakan HTTPS

Hai kawan ! Dalam tutorial ini, kami akan menunjukkan, cara mengarahkan paksa HTTP Apache ke HTTPS

Jika Anda adalah pemilik situs web atau administrator sistem, kemungkinan besar Anda berurusan dengan Apache secara teratur. Salah satu tugas paling umum yang mungkin Anda lakukan adalah mengarahkan lalu lintas HTTP ke versi aman (HTTPS) situs web Anda.

Tidak seperti HTTP, di mana permintaan dan tanggapan dikirim dan dikembalikan dalam teks biasa, HTTPS menggunakan TLS/SSL untuk mengenkripsi komunikasi antara klien dan server.

Kita akan melihat ini dalam dua cara berbeda:

saya. Menggunakan Host Virtual.

ii. Menggunakan .htaccess

Mari kita mulai

Menggunakan Host Virtual

Dalam arahan host virtual, Anda dapat menentukan root dokumen situs (direktori yang berisi file situs web), membuat kebijakan keamanan terpisah untuk setiap situs, menggunakan sertifikat SSL yang berbeda, mengonfigurasi pengalihan, dan banyak lagi.

Saat sertifikat SSL diinstal pada domain, Anda akan memiliki dua arahan host virtual untuk domain tersebut. Yang pertama untuk versi HTTP situs di port 80, dan yang lainnya untuk versi HTTPS di port 443.

Di distro berbasis Red-Hat seperti CentOS dan Fedora, file host virtual disimpan di /etc/httpd/conf.d. Sementara di Debian dan turunannya seperti Ubuntu, file disimpan di /etc/apache2/sites-available direktori.

Untuk mengalihkan situs web ke HTTPS, gunakan Redirect direktif seperti yang ditunjukkan dengan contoh “unixcop.com”

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

</VirtualHost>

Penjelasan

Mari kita simak penjelasan dari kode di atas

  • VirtualHost *:80 – Server Apache mendengarkan koneksi masuk pada port 80 (HTTP) untuk domain yang ditentukan.
  • VirtualHost *:443 – Server Apache mendengarkan koneksi masuk pada port 443 (HTTPS) untuk domain yang ditentukan.

ServerName dan ServerAlias direktif menentukan nama domain host virtual. Pastikan Anda menggantinya dengan nama domain Anda. (dalam kasus kami unixcop.com)

Baris yang disorot, Redirect permanent / https://example.com/ di dalam host virtual HTTP, mengalihkan lalu lintas ke versi HTTPS situs.

Biasanya Anda juga ingin mengarahkan ulang situs versi HTTPS www ke non-www atau sebaliknya. Berikut adalah contoh konfigurasi:

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.unixcop.com'">
    Redirect permanent / https://unixcop.com/
  </If>

</VirtualHost>

Kode di atas memeriksa apakah header permintaan berisi domain www dan dialihkan ke versi non-www.

Setiap kali Anda membuat perubahan pada file konfigurasi, Anda perlu memulai ulang atau memuat ulang layanan Apache agar perubahan diterapkan

.htaccess adalah file konfigurasi pada basis per-direktori untuk server web Apache. File ini dapat digunakan untuk menentukan bagaimana Apache menyajikan file dari direktori tempat file ditempatkan dan untuk mengaktifkan/menonaktifkan fitur tambahan.

Biasanya, .htaccess file ditempatkan di direktori root domain, tetapi Anda dapat memiliki .htaccess lainnya file dalam subdirektori.

Metode ini membutuhkan mod_rewrite modul yang akan dimuat di server Apache. Modul ini dimuat secara default di sebagian besar server. Jika memungkinkan, lebih baik membuat pengalihan di host virtual karena lebih sederhana dan lebih aman.

Untuk mengalihkan semua lalu lintas HTTP ke HTTPS, buka root .htaccess file, dan tambahkan kode berikut ke dalamnya

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Penjelasan

  • RewriteEngine On – mengaktifkan kemampuan Rewrite.
  • RewriteCond %{HTTPS} off – memeriksa koneksi HTTP, dan jika kondisi terpenuhi, baris berikutnya dijalankan.
  • RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301] – redirect HTTP ke HTTPS dengan kode status 301 (Dipindahkan Secara Permanen).

Contoh di bawah ini memiliki kondisi tambahan yang memeriksa apakah permintaan dimulai dengan www . Gunakan untuk memaksa semua pengunjung menggunakan situs versi non-www HTTPS

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Saat mengedit .htaccess file, Anda tidak perlu me-restart server karena Apache membaca file pada setiap permintaan.

Jadi, Anda sudah tahu cara memaksa Apache untuk menggunakan HTTPS.

Dokumentasi Apache


Linux
  1. Cara menggunakan BusyBox di Linux

  2. Cara Menggunakan Nginx untuk Mengarahkan

  3. Cara menggunakan Perintah Su di Linux

  1. Bagaimana saya menggunakan cron di Linux

  2. Bagaimana cara menginstal Apache di Ubuntu?

  3. Cara mengaktifkan dan memaksa HTTPS dengan Plesk

  1. Bagaimana Agar Apache Menggunakan Php 7.0 (bukan 7.1)?

  2. Cara mengamankan Apache dengan Lets Encrypt di Ubuntu 18.04

  3. cara menggunakan pylint di vim