HTTP

Mengarahkan HTTP ke HTTPS

Mengarahkan HTTP ke HTTPS
Apakah Anda menggunakan sertifikat yang ditandatangani sendiri, atau sertifikat dari CA yang terkenal, Anda memerlukan cara untuk mengintegrasikannya dengan layanan Anda. Salah satu kasus penggunaan paling umum dari server HTTP, ini bisa berupa server web atau server REST API tetapi perlu dikonfigurasi agar aman.

Sebagian besar server web seperti nginx dan Apache mendengarkan port 80 secara default dan memerlukan sedikit konfigurasi sebelum mereka mulai menggunakan sertifikat untuk mengenkripsi lalu lintas. Meskipun telah dikonfigurasi, server web masih dapat melayani lalu lintas HTTP tanpa masalah. Jadi pengunjung situs web Anda hanya akan mengetik http://example.com alih-alih https://example.com dan seluruh lalu lintas akan tetap tidak terenkripsi untuk mereka. Untuk menghindari masalah ini, kita perlu mengonfigurasi server HTTP sedemikian rupa sehingga mereka sendiri mengarahkan semua HTTP ke HTTPS.

Pengaturan yang saya miliki menggunakan FQDN dengan IP publik, jadi saya akan mengeluarkan sertifikat SSL dari LetsEncrypt daripada mengeluarkan yang ditandatangani sendiri. Tergantung pada jenis server web yang Anda gunakan, Anda dapat melakukan ini dengan berbagai cara. Tapi alur umumnya seperti ini:

  1. Dapatkan sertifikat yang ditandatangani dari CA. Dalam kasus kami ini akan menjadi LetsEncrypt
  2. Konfigurasikan server web untuk menggunakan kunci enkripsi untuk mengenkripsi lalu lintas HTTP keluar pada port 443. Ini adalah port HTTPS default.
  3. Arahkan ulang semua permintaan masuk pada port 80 (yang merupakan HTTP tidak terenkripsi) ke port 443, sehingga memungkinkan sesi terenkripsi untuk semua koneksi masuk.

Mari kita tunjukkan berbagai cara untuk mencapai apa yang kita inginkan. Pertama adalah solusi termudah yang menggunakan Certbot.

1. Cara termudah - Menggunakan plugin Certbot untuk Nginx atau Apache

Saya akan menggunakan Nginx sebagai contoh untuk server ini. Jika Anda menjalankan yang berbeda, seperti Apache atau HAProxy, maka cukup kunjungi halaman resmi Certbot dan pilih OS dan server web pilihan Anda. Untuk Nginx di Ubuntu 18.04, ini adalah perintah yang Anda perlukan.

Pertama, perbarui indeks repo Anda.

$ sudo apt-get update
$ sudo apt-get install software-properties-common

Anda perlu menambahkan repositori pihak ketiga yang diperlukan, yang mungkin tidak diaktifkan Ubuntu secara default.

$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update

Dan kemudian instal paket certbot dengan plugin Nginx, menggunakan perintah di bawah ini.

$ sudo apt-get install certbot python-certbot-nginx

Instruksi akan berbeda untuk platform yang berbeda dan menginstal plugin untuk server web jika tersedia. Alasan mengapa plugin membuat hidup kita jauh lebih mudah adalah karena mereka dapat secara otomatis mengedit file konfigurasi di server web untuk mengarahkan lalu lintas juga. Kelemahannya adalah jika Anda menjalankan server yang sangat disesuaikan untuk situs web yang sudah ada sebelumnya, maka plugin dapat merusak beberapa hal di sana.

Untuk situs web baru, atau konfigurasi yang sangat sederhana, seperti proxy terbalik, plugin bekerja dengan sangat baik. Untuk mendapatkan sertifikat dan mengalihkan lalu lintas, cukup jalankan perintah di bawah dan ikuti berbagai opsi interaktif  saat paket memandu Anda melewatinya.

$ sudo certbot --nginx

Keluaran:

certbot --nginx
Menyimpan log debug ke /var/log/letsencrypt/letsencrypt.catatan
Plugin yang dipilih: Authenticator nginx, Installer nginx
Masukkan alamat email (digunakan untuk pembaruan mendesak dan pemberitahuan keamanan) (Masukkan 'c' t
batal): [email protected]
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Silakan baca Persyaratan Layanan di
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Kamu harus
setuju untuk mendaftar ke server ACME di
https://acme-v02.api.letsencrypt.org/direktori
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)setuju/(C)batal: A
 

Tidak ada nama yang ditemukan di file konfigurasi Anda. Silakan masukkan di domain Anda
name(s) (dipisahkan koma dan/atau spasi)  (Masukkan 'c' untuk membatalkan): SUBDOMAIN.NAMA DOMAIN.TLD

 
Silakan pilih apakah akan mengarahkan lalu lintas HTTP ke HTTPS, menghapus akses HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Tidak ada pengalihan - Tidak ada perubahan lebih lanjut pada konfigurasi server web.
2: Redirect - Buat semua permintaan dialihkan untuk mengamankan akses HTTPS. Pilih ini untuk
situs baru, atau jika Anda yakin situs Anda berfungsi di HTTPS. Anda dapat membatalkan ini
ubah dengan mengedit konfigurasi server web Anda.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pilih nomor yang sesuai [1-2] lalu [enter] (tekan 'c' untuk membatalkan): 2
Mengarahkan semua lalu lintas pada port 80 ke ssl di /etc/nginx/sites-enabled/default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Selamat! Anda telah berhasil mengaktifkan https://SUBDOMAIN.NAMA DOMAIN.TLD
 
Anda harus menguji konfigurasi Anda di:
https://www.sslab.com/ssltest/analisis.html?d=SUBDOMAIN.NAMA DOMAIN.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

CATATAN PENTING:
- Selamat! Sertifikat dan rantai Anda telah disimpan di:

/etc/letsencrypt/live/SUBDOMAIN.NAMA DOMAIN.TLD/rantai penuh.pem

File kunci Anda telah disimpan di:

/etc/letsencrypt/live/SUBDOMAIN.NAMA DOMAIN.TLD/kunci pribadi.pem

Seperti yang ditunjukkan pada contoh di atas, Anda hanya perlu memberikan alamat email yang valid dan nama domain Anda untuk mendapatkan sertifikat. Sertifikat ini disusun dalam /etc/letsencrypt/live/SUBDOMAIN.NAMA DOMAIN.TLD. Direktori terakhir akan dinamai sesuai FQDN Anda.

Aspek yang paling penting adalah memilih opsi Redirect dan itu akan melakukan tugas mengarahkan semua lalu lintas HTTP ke HTTPS. Jika Anda penasaran dengan perubahan ini, Anda dapat memeriksa file konfigurasi di /etc/nginx/ untuk mendapatkan intinya.

2. Mengedit file Config

Jika Anda ingin mengkonfigurasi server Anda secara manual untuk menggunakan sertifikat to. Untuk mendapatkan sertifikat menggunakan certbot, jalankan:

$ sudo certbot certonly

Seperti sebelumnya, sertifikat disimpan di direktori /etc/letsencrypt/live/namadomainanda.com/

Sekarang kita dapat mengonfigurasi Nginx untuk menggunakan file di direktori ini. Hal pertama yang pertama, saya akan menyingkirkan tata letak direktori khusus Debian. File konfigurasi situs halaman default adalah /etc/nginx/sites-available/default subdirektori dengan symlink ke /etc/nginx/site-enabled.

Saya hanya akan menghapus symlink dan memindahkan file konfigurasi ke /etc/nginx/conf.d dengan .ekstensi conf hanya untuk membuat semuanya lebih umum dan berlaku untuk distro lain juga.

$ sudo rm /etc/sites-enabled/default
$ sudo mv /etc/nginx/sites-available/default /etc/nginx/conf.d/default.konf
$ sudo layanan nginx restart

Saya akan memodifikasi file konfigurasi default ini untuk menunjukkan bagaimana TLS diaktifkan.

Berikut ini adalah konten di dalam file konfigurasi default Anda, tanpa bagian yang dikomentari. Bagian yang disorot adalah bagian yang harus Anda tambahkan ke konfigurasi server Anda untuk mengaktifkan TLS dan blok terakhir dalam file konfigurasi ini mendeteksi apakah skema menggunakan TLS atau tidak. Jika TLS tidak digunakan, maka itu hanya mengembalikan kode pengalihan 301 ke klien dan mengubah URL untuk menggunakan https sebagai gantinya. Dengan cara ini, Anda tidak akan kehilangan pengguna

server
dengarkan 80 default_server;
mendengarkan [::]:80 default_server;
dengarkan 443 ssl;
ssl_certificate  /etc/letsencrypt/live/SUBDOMAIN.DOMAIN.TLS/rantai penuh.pem;
ssl_certificate_key /etc/letsencrypt/live/SUBDOMAIN.DOMAIN.TLD/kunci pribadi.pem;
ssl_session_cache dibagikan:le_nginx_SSL:1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1  TLSv1.2;
ssl_prefer_server_ciphers aktif;
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";
root /var/www/html;
indeks indeks.indeks html.indeks htm.nginx-debian.html;
nama server _;
lokasi /
try_files $uri $uri/ =404;

jika ($skema != "https")
kembalikan 301 https://$host$request_uri;

 

Ada beberapa parameter tambahan yang ditambahkan ke file konfigurasi ini. Termasuk parameter yang menyatakan batas waktu, versi TLS yang harus Anda gunakan dan sandi enkripsi apa yang akan digunakan server. Ini dipinjam dari konfigurasi yang direkomendasikan (tetapi opsional) Certbot untuk Nginx.

Sekarang, periksa apakah file konfigurasi valid dan mulai ulang server.

$ sudo nginx -t
nginx: file konfigurasi /etc/nginx/nginx.sintaks conf baik-baik saja
nginx: file konfigurasi /etc/nginx/nginx.tes conf berhasil
$ sudo layanan nginx restart

Kesimpulan

Anda dapat menerapkan pendekatan yang sama untuk aplikasi dan layanan web yang lebih rumit yang memerlukan HTTPS. Letsencrypt memungkinkan Anda mengeluarkan sertifikat untuk beberapa nama domain sekaligus, dan Anda dapat meng-host beberapa situs web di belakang server web nginx Anda dengan cukup mudah. Jika Anda mengikuti contoh di atas, coba jangkau situs web Anda menggunakan http (http://SUBDOMAIN.DOMAIN.TLD) dan Anda akan diarahkan ke HTTPS secara otomatis.

Untuk server web lain, seperti Apache, gunakan plugin certbot yang sesuai atau lihat dokumentasi resminya.

Kursor melompat atau bergerak secara acak saat mengetik di Windows 10
Jika Anda menemukan bahwa kursor mouse Anda melompat atau bergerak sendiri, secara otomatis, acak saat mengetik di laptop atau komputer Windows, maka ...
Cara membalikkan arah gulir Mouse dan Touchpads di Windows 10
Mouse dan Panel sentuhs tidak hanya membuat komputasi menjadi mudah tetapi juga lebih efisien dan tidak memakan banyak waktu. Kami tidak dapat membaya...
Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...