HTTP

Mengarahkan HTTP ke HTTPS

Mengarahkan HTTP ke HTTPS
Sama ada anda menggunakan sijil yang ditandatangani sendiri, atau sijil dari CA yang terkenal, anda memerlukan kaedah untuk menggabungkannya dengan perkhidmatan anda. Salah satu kes penggunaan yang paling biasa dari pelayan HTTP, ini mungkin pelayan web atau pelayan REST API tetapi perlu dikonfigurasi agar aman.

Sebilangan besar pelayan web seperti nginx dan apache mendengar di port 80 secara lalai dan memerlukan sedikit konfigurasi sebelum mereka mula menggunakan sijil untuk menyulitkan lalu lintas. Walaupun telah dikonfigurasikan, pelayan web masih dapat melayani lalu lintas HTTP tanpa masalah. Oleh itu, pelawat ke laman web anda hanya akan menaip contoh http: //.com dan bukannya https: // contoh.com dan keseluruhan lalu lintas akan tetap tidak disulitkan untuk mereka. Untuk mengelakkan masalah ini, kita perlu mengkonfigurasi pelayan HTTP sehingga mereka sendiri mengarahkan semua HTTP ke HTTPS.

Penyediaan yang saya ada menggunakan FQDN dengan IP awam, jadi saya akan mengeluarkan sijil SSL dari LetsEncrypt dan bukannya mengeluarkan yang ditandatangani sendiri. Bergantung pada jenis pelayan web yang anda gunakan, anda boleh melakukannya dengan pelbagai cara. Tetapi aliran umum seperti ini:

  1. Dapatkan sijil yang ditandatangani dari CA. Dalam kes ini, ini akan menjadi LetsEncrypt
  2. Konfigurasikan pelayan web untuk menggunakan kunci penyulitan untuk menyulitkan trafik HTTP keluar pada port 443. Ini adalah port HTTPS lalai.
  3. Ubah semua permintaan masuk pada port 80 (yang tidak disulitkan HTTP) ke port 443, sehingga membolehkan sesi yang dienkripsi untuk semua sambungan masuk.

Mari tunjukkan pelbagai cara untuk mencapai apa yang kita mahukan. Pertama adalah penyelesaian termudah yang menggunakan Certbot.

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

Saya akan menggunakan Nginx sebagai contoh untuk pelayan ini. Sekiranya anda menjalankan yang lain, seperti Apache atau HAProxy, maka hanya lawati halaman rasmi Certbot dan pilih OS dan pelayan web pilihan anda. Untuk Nginx di Ubuntu 18.04, ini adalah perintah yang anda perlukan.

Pertama, kemas kini indeks repo anda.

$ sudo apt-get kemas kini
$ sudo apt-get install software-properties-common

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

$ sudo add-apt-repository semesta
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get kemas kini

Dan kemudian pasang paket certbot dengan pemalam Nginx, menggunakan arahan di bawah.

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

Arahan akan berbeza untuk platform yang berbeza dan pasang pemalam untuk pelayan web jika ada. Sebab mengapa pemalam menjadikan hidup kita lebih mudah adalah kerana mereka dapat mengedit fail konfigurasi secara automatik di pelayan web untuk mengarahkan lalu lintas juga. Kelemahannya ialah jika anda menjalankan pelayan yang sangat disesuaikan untuk laman web yang sudah ada sebelumnya, maka pemalamnya boleh memecahkan beberapa barang di sana.

Untuk laman web baru, atau konfigurasi yang sangat mudah, seperti proksi terbalik, pemalam berfungsi dengan baik. Untuk mendapatkan sijil dan mengarahkan lalu lintas, jalankan arahan di bawah ini dan ikuti pelbagai pilihan interaktif ketika pakej memandu anda melalui.

$ sudo certbot --nginx

Pengeluaran:

certbot --nginx
Menyimpan log debug ke / var / log / letsencrypt / letsencrypt.balak
Pemalam yang dipilih: Authenticator nginx, Installer nginx
Masukkan alamat e-mel (digunakan untuk pembaharuan segera dan pemberitahuan keselamatan) (Masukkan 'c' t
batalkan): SENDIRI @ CONTOH.KOM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sila baca Syarat Perkhidmatan di
https: // letsencrypt.org / dokumen / LE-SA-v1.2-November-15-2017.pdf. Kamu mesti
bersetuju untuk mendaftar dengan pelayan ACME di
https: // acme-v02.api.letencrypt.org / direktori
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 

Tidak terdapat nama dalam fail konfigurasi anda. Masukkan domain anda
nama (koma dan / atau ruang dipisahkan) (Masukkan 'c' untuk membatalkan): SUBDOMAIN.NAMA DOMAIN.TLD

 
Pilih sama ada untuk atau tidak mengarahkan lalu lintas HTTP ke HTTPS, membuang akses HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Tiada pengalihan - Jangan membuat perubahan selanjutnya pada konfigurasi pelayan web.
2: Redirect - Buat semua permintaan redirect untuk mendapatkan akses HTTPS. Pilih ini untuk
laman web baru, atau jika anda yakin laman web anda berfungsi pada HTTPS. Anda boleh membuat asal ini
ubah dengan mengedit konfigurasi pelayan web anda.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pilih nombor yang sesuai [1-2] kemudian [masukkan] (tekan 'c' untuk membatalkan): 2
Mengarahkan semua lalu lintas di port 80 ke ssl di / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Selamat bertunang! Anda berjaya mengaktifkan https: // SUBDOMAIN.NAMA DOMAIN.TLD
 
Anda harus menguji konfigurasi anda di:
https: // www.suku kata.com / ssltest / analisis.html?d = SUBDOMAIN.NAMA DOMAIN.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

NOTA PENTING:
- Selamat bertunang! Sijil dan rantai anda telah disimpan di:

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

Fail kunci anda telah disimpan di:

/ etc / letsencrypt / live / SUBDOMAIN.NAMA DOMAIN.TLD / privkey.pem

Seperti yang ditunjukkan dalam contoh di atas, anda hanya perlu memberikan alamat e-mel yang sah dan nama domain anda untuk mendapatkan sijil. Sijil ini dimasukkan / etc / letsencrypt / live / SUBDOMAIN.NAMA DOMAIN.TLD. Direktori terakhir akan dinamakan mengikut FQDN anda.

Aspek yang paling penting adalah memilih pilihan Redirect dan akan melakukan tugas mengarahkan semua lalu lintas HTTP ke HTTPS. Sekiranya anda ingin tahu apakah perubahan ini, anda boleh memeriksa fail konfigurasi di / dll / nginx / untuk mendapatkan intinya.

2. Menyunting fail Config

Sekiranya anda ingin mengkonfigurasi pelayan anda secara manual untuk menggunakan sijil. Untuk mendapatkan sijil menggunakan certbot, jalankan:

$ sudo certbot sijil

Seperti sebelumnya, sijil disimpan dalam direktori / etc / letsencrypt / live / nama domain anda.com /

Sekarang kita dapat mengkonfigurasi Nginx untuk menggunakan fail dalam direktori ini. Perkara pertama yang pertama, saya akan menyingkirkan susun atur direktori khusus Debian. Fail konfigurasi laman web lalai adalah / etc / nginx / laman web-tersedia / lalai subdirektori dengan symlink ke / etc / nginx / didayakan laman web.

Saya hanya akan memadam symlink dan memindahkan fail konfigurasi ke / etc / nginx / conf.d dengan a .peluasan conf hanya untuk memastikan perkara 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 / lalai.pengesahan
Perkhidmatan sudo $ restart nginx

Saya akan mengubah fail konfigurasi lalai ini untuk menunjukkan bagaimana TLS diaktifkan.

Berikut adalah kandungan di dalam fail konfigurasi lalai anda, tanpa bahagian yang dikomentari. Bahagian yang diserlahkan adalah bahagian yang harus anda tambahkan ke konfigurasi pelayan anda untuk mengaktifkan TLS dan blok terakhir dalam fail konfigurasi ini mengesan sama ada skema menggunakan TLS atau tidak. Sekiranya TLS tidak digunakan, maka ia hanya mengembalikan kod pengalihan 301 kepada klien dan mengubah URL untuk menggunakan https sebagai gantinya. Dengan cara ini, anda tidak akan kehilangan pengguna

pelayan
dengarkan 80 default_server;
dengar [::]: 80 default_server;
dengar 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMAIN.TLS / rantai penuh.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMAIN.TLD / privkey.pem;
ssl_session_cache dikongsi: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers dihidupkan;
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 pelayan _;
lokasi /
cuba_files $ uri $ uri / = 404;

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

 

Terdapat beberapa parameter tambahan yang ditambahkan ke fail konfigurasi ini. Termasuk parameter yang menyatakan tamat waktu, versi TLS yang harus anda gunakan dan cipher enkripsi yang akan digunakan pelayan. Ini dipinjam dari konfigurasi Certbot (tetapi pilihan) yang disarankan untuk Nginx.

Sekarang, periksa sama ada fail konfigurasi itu sah dan mulakan semula pelayan.

$ sudo nginx -t
nginx: fail konfigurasi / etc / nginx / nginx.sintaks conf ok
nginx: fail konfigurasi / etc / nginx / nginx.ujian conf berjaya
Perkhidmatan sudo $ restart nginx

Kesimpulannya

Anda boleh menggunakan pendekatan yang sama untuk aplikasi dan perkhidmatan web yang lebih rumit yang memerlukan HTTPS. Letsencrypt mari anda mengeluarkan sijil untuk beberapa nama domain sekaligus, dan anda boleh menghoskan banyak laman web di belakang pelayan web nginx anda dengan mudah. Sekiranya anda mengikuti contoh di atas, cuba hubungi laman web anda menggunakan http (http: // SUBDOMAIN.DOMAIN.TLD) dan anda akan dialihkan ke HTTPS secara automatik.

Untuk pelayan web lain, seperti Apache, gunakan plugin certbot yang sesuai atau rujuk dokumentasi rasmi mereka.

Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...