Cara Menyiapkan SSL/TLS dengan Apache Httpd di Red Hat

Cara Menyiapkan SSL/TLS dengan Apache Httpd di Red Hat

Objektif

Objektifnya adalah untuk menubuhkan Apache Webserver dengan sokongan SSL/TLS pada Red Hat Linux, menggunakan pakej yang dihantar dengan pengedaran.

Sistem operasi dan versi perisian

  • Sistem operasi: Red Hat Enterprise Linux 7.5
  • Perisian: Apache httpd, mod_ssl

Keperluan

Akses istimewa ke webserver.

Kesukaran

Mudah

Konvensyen

  • # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
  • $ - Memandangkan perintah Linux dilaksanakan sebagai pengguna yang tidak berkadar biasa

Pengenalan

Memasang Webserver cukup mudah pada pengagihan moden, kerana kes penggunaan webserver sangat biasa sehingga kebanyakan jika tidak semua pengagihan menyediakan pakej di repositori mereka. Apache httpd adalah webserver yang boleh dipercayai yang digunakan oleh sebahagian besar internet, dan banyak modul tersedia untuk melanjutkan fungsinya.

Berita teknologi hari ini dipenuhi dengan pelanggaran keselamatan, kecurian/kebocoran data, dan keinginan yang semakin meningkat untuk menggunakan penyulitan
Di mana ia mungkin. Semasa menggunakan HTTPS mempunyai overhead pengkomputeran tertentu di kedua -dua pelayan dan klien, tidak menggunakannya bermakna semua data yang dihantar dalam kedua -dua arah adalah teks yang jelas, boleh dibaca oleh sesiapa sahaja yang dapat membaca lalu lintas semasa ia melewati rangkaian.

Katakan anda mempunyai perkhidmatan web di mana pelanggan boleh log masuk menggunakan nama pengguna dan kata laluan mereka - kaedah pengesahan biasa - untuk mencapai data mereka sendiri, termasuk pentadbir laman web ini. Jika anda memberikan perkhidmatan ini melalui HTTP, semua maklumat ini boleh direkodkan, jadi seseorang boleh mendapatkan semua kelayakan log masuk, log masuk sebagai pentadbir tapak, dan mengunci pentadbir sebenar atau menerbitkan kandungan yang berbahaya kepada pelawat.

Keupayaan untuk menggunakan penyulitan semasa melayari dibina untuk semua pelayar moden utama untuk masa yang lama, dan penyulitan cara yang sama tersedia untuk webservers selama bertahun -tahun sekarang.



Pasang Webserver Apache dengan sokongan SSL/TLS

Untuk memasang pakej yang diperlukan, hanya berjalan sebagai akar:

# yum Pasang httpd mod_ssl -y

Sekiranya pelayan sudah dipasang HTTPD, anda hanya perlu memasang mod_ssl, Semua konfigurasi yang diperlukan dilakukan
oleh pemasang. Perhatikan bagaimanapun bahawa dalam kes ini anda perlu memulakan semula HTTPD, jadi ia boleh memuatkan modul SSL. Dengan menggunakan
Pakej yang dihantar dengan pengedaran, kita dapat menjadikan kehidupan kita lebih mudah, kerana Red Hat akan memberikan kemas kini yang diuji dengan baik untuk kedua -dua sistem operasi dan webserver, tentu saja, anda memerlukan langganan untuk menerima kemas kini - tetapi kemas kini diperlukan untuk Sistem operasi bagaimanapun tetap terkini.

Dayakan dan Mulakan Pelayan HTTPD

Menggunakan SystemD, anda boleh mengaktifkan dan memulakan webserver dengan arahan di bawah:

# Systemctl Dayakan Httpd && Systemctl Mula Httpd

Dengan cara ini perkhidmatan HTTPD akan dimulakan secara automatik oleh SystemD pada setiap boot.

Sahkan pemasangan dan status

Anda boleh menyemak status webserver menggunakan SystemD:

# status systemctl httpd -l ● httpd.Perkhidmatan - Pelayan HTTP Apache dimuatkan: dimuatkan (/usr/lib/systemd/system/httpd.perkhidmatan; didayakan; Pratetap Vendor: Dilumpuhkan) Aktif: Aktif (Berlari) Sejak Sabtu 2018-07-07 21:35:33 CEST; 1 minggu 4 hari yang lalu Dokumen: Man: Httpd (8) Man: Apachectl (8) PID Utama: 1292 (HTTPD) Status: "Jumlah Permintaan: 0; Permintaan Semasa/Sec: 0; Trafik Semasa: 0 B/SEC" Tugas " : 9 cgroup: /sistem.slice/httpd.Perkhidmatan ├─ 1292/usr/sbin/httpd -dforeground ├─13271/usr/sbin/httpd -dforeground ├ ├─13272/usr/sbin/httpd -dforeground ├ ─1327/usr/sbin/sbin /sbin/httpd -dforeground ├─27509/usr/sbin/httpd -dforeground ├─27510/usr/sbin/httpd -dforeground ├─27511/usr/sbin/sbin/sbin 07 Jul 21:35:32 Web.Foobar.com Systemd [1]: Memulakan pelayan HTTP Apache .. . 07 Jul 21:35:33 Web.Foobar.com Systemd [1]: Memulakan pelayan HTTP Apache. 
Salinan

Untuk memeriksa bahawa mod_ssl dipasang dengan betul:

# rpm -q mod_ssl mod_ssl -2.4.6-80.EL7.x86_64 
Salinan

Dan dimuatkan sebagai modul ke dalam pelayan HTTPD:

# apachectl -m | GREP SSL SSL_MODULE (dikongsi) 
Salinan

Penggunaan sijil

Apabila kita memasang pakej mod_ssl, modul itu menambah dirinya ke pelayan httpd, jadi ia akan memuatkannya pada permulaan seterusnya.
Sijil ditandatangani sendiri dihasilkan secara lalai, yang digunakan untuk mewujudkan sambungan yang disulitkan dengan penyemak imbas.
Buka penyemak imbas, dan arahkannya ke pelayan melalui HTTPS:

Mesej ralat SSL dalam penyemak imbas Firefox

Mari kita abaikan ini buat masa ini, tambahkan pengecualian keselamatan (jangan tetapkan "Simpan secara kekal pengecualian ini"), dan teruskan. Halaman lalai muncul. Sekiranya Red Hat, ini kelihatan seperti berikut:

Halaman Laman Utama Lalai Pemasangan Webserver Httpd di Red Hat Linux

Perhatikan titik seru di sebelah URL (pelayar lain boleh menunjukkan amaran yang berbeza).

Webserver kami kini dan berjalan di atas HTTPS dengan sijil yang ditandatangani sendiri, dan bersedia untuk melayani kandungan yang diterbitkan
di bawah /var/www/html, akar kandungan lalai dari webserver pada topi merah.

Sambungan antara webserver dan penyemak imbas kini disulitkan, jadi lebih sukar untuk memusnahkan lalu lintas (yang
boleh digunakan, contohnya mencuri kelayakan log masuk). Adakah kita selesai? Dengan cara ini, kami menyelesaikan matlamat kami.

Hakikat bahawa penyemak imbas kami tidak dapat mengenal pasti sijil pelayan sebagai sah tidak menghalangnya menggunakan komunikasi yang disulitkan dengan pelayan, jika kami secara jelas memutuskan bahawa kami mempercayai sijil ini. Ini mungkin sesuai untuk sistem kecil (rumah), di mana anda hanya mempunyai beberapa pengguna, serta hanya beberapa pelayan web - anda harus menerima sijil yang ditandatangani sendiri dalam pelayar yang harus menjadi pelanggan dari webservers, dan yang lain Penyemak imbas di dunia tidak boleh melihat kandungan yang disediakan oleh pelayan ini.

Perhatikan bagaimanapun, bahawa sijil yang ditandatangani sendiri akan tamat tempoh masa (seperti mana-mana sijil lain), dan anda akan mempunyai
untuk memperbaharuinya untuk menggunakannya. Sijil yang tamat tempoh dianggap tidak sah oleh pelayar, dengan cara yang sama seperti sijil yang tidak dapat dibuktikan sah oleh rantaian sijil yang sah di atasnya.

Untuk mengetahui apabila sijil yang ditandatangani sendiri (atau lain-lain) akan tamat, kita perlu mencarinya di sistem fail dengan berunding dengan fail konfigurasi modul SSL:

# grep sslcertificatefile/etc/httpd/conf.D/SSL.conf | grep -v "#" sslcertificatefile/etc/pki/tls/certs/localhost.Crt 
Salinan

Dan kemudian gunakan OpenSSL untuk mendapatkan tarikh luput:

# openssl x509 -enddate -noout -in/etc/pki/tls/certs/localhost.CRT Notafter = 10 Jul 07:06:17 2019 GMT 
Salinan

Selepas (atau sebaliknya, sebelum) sijil tamat, anda perlu memperbaharui atau menggantikannya dengan sijil yang dipercayai oleh pelanggan. A
Pendekatan yang lebih elegan berbanding dengan sijil yang ditandatangani sendiri meminta dan menggunakan sijil dari CA
(Pihak Berkuasa Sijil) Pelanggan anda sudah dipercayai, sama ada dari CA dalaman anda (yang seterusnya boleh mempunyai global
akar yang dipercayai di atasnya), atau terus dari CA yang dipercayai di seluruh dunia.

Untuk menggunakan sijil yang diperoleh dan bukannya lalai, parameter di bawah mesti menunjuk pada fail sijil,
kunci sijil, dan sijil CA yang menandatangani sijil SSL masing -masing. Fail mesti disalin
webserver, dan mesti dibaca oleh pengguna sistem pengendalian yang menjalankan webserver - sekiranya pemasangan lalai red hat, pengguna Apache. Parameter ini boleh didapati di atas yang disebutkan di atas SSL.Conf.

SslcertificateFile/etc/httpd/custom-serve/server-ssl.CRT SSLCertificateSeyFile/etc/httpd/custom-cert/server-ssl.Kunci SSLCACertificateFile/etc/httpd/custom-sert/ca.Crt 


Mengalihkan trafik HTTP ke HTTPS

Sekarang kita melayani HTTPS, kita dapat menguatkuasakan penggunaan HTTPS semasa melayani semua atau sebahagian kandungan kami. Dalam kita
Contohnya, kami sangat selamat, dan menggunakan HTTP hanya untuk mengalihkan pelanggan masuk ke HTTPS.

Soalan mungkin timbul, jika kita mahu bercakap https sahaja, mengapa kita mendengar HTTP sama sekali? Katakan pengguna akhir, yang baru sahaja mendengar laman web kami, dan mendapat URL dari rakan yang tidak mengandungi protokol. Sehingga hari ini, kebanyakan pelayar lalai ke protokol HTTP, jika tidak ditentukan secara eksplisit. Sekiranya kita berhenti berkhidmat di HTTP, pengguna menaip URL tanpa HTTPS akan menerima mesej ralat jika pelayarnya cuba mencapai pelayan kami melalui HTTP.

Untuk mengalihkan semua permintaan HTTP yang masuk ke HTTPS, kami membuat fail di bawah /etc/httpd/conf.d Dengan nama deskriptif, katakan, redirect_http.Conf dengan kandungan berikut (di mana web.Foobar.com adalah nama DNS laman web ini):

 ServerName Web.Foobar.com redirect kekal/https: // web.Foobar.com/  

Dan mulakan semula pelayan web. Kami boleh menguji jika pengalihan berfungsi dengan betul dari baris arahan dengan Wget (dari tuan rumah yang mempercayai sijil SSL dari webserver):

$ wget http: // web.Foobar.com/--2018-07-19 16: 13: 01-- http: // web.Foobar.com/ menyelesaikan web.Foobar.com (web.Foobar.com) .. . 10.9.8.7 Menyambung ke Web.Foobar.com (web.Foobar.com) | 10.9.8.7 |: 80 .. . bersambung. Permintaan HTTP dihantar, menunggu tindak balas .. . 301 Bergerak Lokasi secara kekal: https: // web.Foobar.com/[berikut] --2018-07-19 16: 13: 01-- https: // web.Foobar.com/ menyambung ke web.Foobar.com (web.Foobar.com) | 10.9.8.7 |: 443 .. . bersambung. Permintaan HTTP dihantar, menunggu tindak balas .. . 200 ok panjang: 240 [teks/html] menjimatkan ke: 'indeks.html '100%[============================================== =====================================>] 240 --.-K/s pada 0s 2018-07-19 16:13:01 (7.04 MB/s) - 'Indeks.html 'disimpan [240/240] 
Salinan

Output menunjukkan respons HTTP 301, dan kami dapat melihat bagaimana klien wget kami mengikuti redirect untuk menyambung menggunakan protokol HTTPS. Secara lalai lalu lintas SSL dilog masuk dalam logfile yang berbeza maka lalu lintas HTTP. Kita dapat mencari perkara di atas
permintaan log masuk /var/log/httpd/ssl_access_log:

10.9.8.8 - - [19/Jul/2018: 16: 13: 01 +0200] "Dapatkan/http/1.1 "200 240

Kesimpulan

Dengan ini kami telah menyelesaikan objektif kami, kami menyediakan webserver yang menggunakan HTTPS untuk bercakap dengan pelanggan, dan mengalihkan permintaan HTTP masuk ke HTTPS juga.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Muat turun linux
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Distro linux terbaik untuk pemaju
  • Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
  • Panduan Penyelesaian Masalah Umum GNU/Linux untuk Pemula
  • MX Linux vs Ubuntu