Cara Mengatur SSL/TLS Dengan Apache Httpd di Red Hat

Cara Mengatur SSL/TLS Dengan Apache Httpd di Red Hat

Objektif

Tujuannya adalah untuk mengatur Webserver Apache dengan dukungan SSL/TLS di Red Hat Linux, menggunakan paket yang dikirim dengan distribusi.

Sistem Operasi dan Versi Perangkat Lunak

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

Persyaratan

Akses istimewa ke server web.

Kesulitan

MUDAH

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa

Perkenalan

Menginstal server web cukup mudah pada distribusi modern, karena penggunaan kasus webserver sangat umum sehingga sebagian besar jika tidak semua distribusi menyediakan paket dalam repositori mereka. Apache httpd adalah server web yang andal yang digunakan oleh sebagian besar internet, dan banyak modul tersedia untuk memperluas fungsinya.

Berita teknologi akhir -akhir ini dipenuhi dengan pelanggaran keamanan, pencurian/kebocoran data, dan keinginan untuk menggunakan enkripsi
dimana mungkin. Saat menggunakan HTTPS memiliki overhead komputasi tertentu di sisi server dan klien, tidak menggunakannya berarti semua data yang dikirim ke kedua arah adalah teks yang jelas, dapat dibaca oleh siapa saja yang dapat membaca lalu lintas saat melewati jaringan tersebut.

Misalkan Anda memiliki layanan web di mana klien dapat masuk menggunakan nama pengguna dan kata sandi mereka - metode otentikasi umum - untuk mencapai data mereka sendiri, termasuk admin Situs. Jika Anda memberikan layanan ini melalui HTTP, semua informasi ini dapat direkam, sehingga seseorang bisa mendapatkan semua kredensial login, masuk sebagai admin situs, dan mengunci admin asli atau mempublikasikan konten yang berbahaya bagi pengunjung.

Kemampuan untuk menggunakan enkripsi saat menjelajah dibangun untuk semua browser modern utama untuk waktu yang lama, dan dengan cara yang sama enkripsi tersedia untuk server web selama bertahun -tahun sekarang.



Instal Apache WebServer dengan dukungan SSL/TLS

Untuk menginstal paket yang diperlukan, cukup jalankan sebagai root:

# yum instal httpd mod_ssl -y

Jika server sudah menginstal HTTPD, Anda hanya perlu menginstal mod_ssl, Semua konfigurasi yang diperlukan dilakukan
oleh pemasang. Namun perhatikan bahwa dalam hal ini Anda perlu memulai kembali httpd, sehingga dapat memuat modul SSL. Dengan menggunakan
Paket -paket yang dikirim dengan distribusi, kita dapat membuat hidup kita lebih mudah, karena Red Hat akan memberikan pembaruan yang diuji dengan baik untuk sistem operasi dan server web, tentu saja, Anda memerlukan langganan untuk menerima pembaruan - tetapi pembaruan diperlukan untuk yang diperlukan untuk yang diperlukan Sistem operasi tetap untuk tetap up to date.

Aktifkan dan mulai server httpd

Menggunakan SystemD Anda dapat mengaktifkan dan memulai server web dengan perintah di bawah ini:

# Systemctl Aktifkan httpd && systemctl mulai httpd

Dengan cara ini layanan HTTPD akan secara otomatis dimulai oleh SystemD di setiap boot.

Verifikasi instalasi dan status

Anda dapat memeriksa status server web menggunakan SystemD:

# Systemctl Status httpd -l ● httpd.Layanan - Server HTTP Apache dimuat: dimuat (/usr/lib/systemd/system/httpd.melayani; diaktifkan; Preset Vendor: Dinonaktifkan) Aktif: Aktif (Berlari) Sejak SAT 2018-07-07 21:35:33 CEST; 1 minggu 4 hari yang lalu Docs: Man: httpd (8) Man: Apachectl (8) PID Utama: 1292 (httpd) Status: "Total Permintaan: 0; Permintaan Saat Ini/Sec: 0; Lalu Lintas Saat Ini: 0 B/Sec" Tugass : 9 cgroup: /sistem.Slice/httpd.Layanan ├─ 1292/usr/sbin/httpd -dForeGround ├─13271/usr/sbin/httpd -dForeGround ├─13272/usr/sbin/httpd -dForeGround ├─13273/USR/SBIN/HTTPD -DFOREGROGED ├─13273/USR/SBIN/HTTPD -DFOREGREG ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├. /SBIN/httpd -dForround ├─27509/usr/sbin/httpd -dForeGround ├─27510/usr/sbin/httpd -dForround ├─27511/usr/sbin/httpd -dforground └─27511/usr/sbin/httpd -dFORGOGGOGE └─27512/usr/sbin/httpd └ └ └ └ └ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ Jul 07 21:35:32 Web.foobar.com Systemd [1]: Memulai server HTTP Apache… . Jul 07 21:35:33 Web.foobar.com Systemd [1]: Memulai server Apache HTTP. 
Menyalin

Untuk memeriksa bahwa mod_ssl diinstal dengan benar:

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

Dan dimuat sebagai modul ke server httpd:

# apachectl -m | GREP SSL SSL_MODULE (dibagikan) 
Menyalin

Penggunaan sertifikat

Saat kami menginstal paket mod_ssl, modul menambahkan dirinya ke server httpd, jadi itu akan memuatnya pada startup berikutnya.
Sertifikat yang ditandatangani sendiri dihasilkan secara default, yang digunakan untuk membuat koneksi terenkripsi dengan browser.
Buka browser, dan arahkan ke server melalui https:

Pesan Kesalahan SSL di Browser Firefox

Mari kita abaikan ini untuk saat ini, tambahkan pengecualian keamanan (jangan atur "simpan pengecualian ini"), dan lanjutkan. Halaman default muncul. Dalam kasus Red Hat, ini terlihat seperti berikut:

Halaman Beranda Default dari HTTPD Webserver Instal di Red Hat Linux

Perhatikan titik seru di sebelah URL (browser lain dapat menunjukkan peringatan yang berbeda).

Server web kami sekarang sudah siap dan menjalankan https dengan sertifikat yang ditandatangani sendiri, dan siap untuk melayani konten yang diterbitkan
di bawah /var/www/html, Root konten default dari server web di Red Hat.

Koneksi antara server web dan browser sekarang dienkripsi, jadi lebih sulit untuk memalsukan lalu lintas (yang
dapat digunakan, misalnya mencuri kredensial login). Sudahkah kita selesai? Di satu sisi, kami menyelesaikan tujuan kami.

Fakta bahwa browser kami tidak dapat mengidentifikasi sertifikat server sebagai valid tidak mencegahnya menggunakan komunikasi terenkripsi dengan server, jika kami secara eksplisit memutuskan bahwa kami mempercayai sertifikat ini. Ini mungkin cocok untuk sistem (rumah) kecil, di mana Anda hanya memiliki beberapa pengguna, serta hanya beberapa server web - Anda harus menerima sertifikat yang ditandatangani sendiri di browser yang seharusnya menjadi klien dari server web, dan lainnya Browser di dunia seharusnya tidak pernah melihat konten yang disediakan oleh server ini.

Namun, perhatikan bahwa sertifikat yang ditandatangani sendiri ini akan kedaluwarsa dalam waktu (seperti yang seharusnya dimiliki oleh sertifikat lainnya), dan Anda akan melakukannya
untuk memperbaruinya untuk menggunakannya. Sertifikat kedaluwarsa dianggap tidak valid oleh browser, cara yang sama seperti sertifikat yang tidak dapat terbukti valid dengan rantai sertifikat yang valid di atasnya.

Untuk mengetahui kapan sertifikat yang ditandatangani sendiri (atau lainnya) akan kedaluwarsa, kita harus menemukannya pada sistem file dengan berkonsultasi dengan file konfigurasi modul SSL:

# grep sslcertificateFile/etc/httpd/conf.D/SSL.conf | grep -v "#" sslcertificateFile/etc/pki/tls/sertifikat/localhost.crt 
Menyalin

Dan kemudian gunakan OpenSSL untuk mendapatkan tanggal kedaluwarsa:

# OpenSSL X509 -EndDate -noout -in/etc/pki/tls/sertifikat/localhost.crt notafter = 10 Jul 07:06:17 2019 GMT 
Menyalin

Setelah (atau lebih tepatnya, sebelum) sertifikat berakhir, Anda harus memperbarui atau menggantinya dengan sertifikat yang dipercayai klien. A
pendekatan yang lebih elegan berbeda dengan sertifikat yang ditandatangani sendiri meminta dan menggunakan sertifikat dari CA
(Otoritas Sertifikat) Klien Anda sudah percaya, baik dari CA internal Anda (yang pada gilirannya dapat memiliki global
Root CA tepercaya di atasnya), atau langsung dari CA yang dipercaya secara global.

Untuk menggunakan sertifikat yang diperoleh alih -alih default, parameter di bawah ini harus menunjuk ke file sertifikat,
kunci sertifikat, dan sertifikat CA yang masing -masing menandatangani sertifikat SSL. File harus disalin
Webserver, dan harus dapat dibaca oleh pengguna sistem operasi yang menjalankan server web - dalam hal instalasi Default Topi Merah, pengguna Apache. Parameter ini dapat ditemukan di yang disebutkan di atas SSL.conf.

SslcertificateFile/etc/httpd/custom-cert/server-ssl.CRT SSLCertificateKeyFile/etc/httpd/custom-cert/server-ssl.Key sslcacertificateFile/etc/httpd/custom-cert/ca.crt 


Mengarahkan lalu lintas http ke https

Sekarang kami melayani melalui https, kami dapat menegakkan penggunaan https sambil melayani semua atau sebagian dari konten kami. Di kami
Contoh, kami sangat aman, dan menggunakan HTTP hanya untuk mengarahkan kembali klien yang masuk ke HTTPS.

Sebuah pertanyaan mungkin muncul, jika kita ingin berbicara https saja, mengapa kita mendengarkan http sama sekali? Misalkan pengguna akhir, yang baru saja mendengar situs kami, dan mendapat URL dari seorang teman yang tidak berisi protokol. Sampai hari ini, sebagian besar browser default ke protokol http, jika tidak ditentukan secara eksplisit. Jika kami berhenti melayani melalui HTTP, pengguna mengetik URL tanpa HTTPS akan menerima pesan kesalahan jika browsernya mencoba mencapai server kami melalui HTTP.

Untuk mengarahkan semua permintaan HTTP yang masuk ke HTTPS, kami membuat file di bawah /etc/httpd/conf.D Dengan nama deskriptif, katakanlah, redirect_http.conf dengan konten berikut (di mana web.foobar.com adalah nama DNS situs):

 Web SERVERNAME.foobar.com Redirect Permanen/https: // web.foobar.com/  

Dan restart server web. Kami dapat menguji apakah pengalihan berfungsi dengan benar dari baris perintah dengan wget (dari host yang mempercayai sertifikat SSL dari server web):

$ 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 Menghubungkan ke Web.foobar.com (web.foobar.com) | 10.9.8.7 |: 80… . terhubung. Permintaan http dikirim, menunggu tanggapan… . 301 dipindahkan secara permanen Lokasi: https: // web.foobar.com/[berikut] --2018-07-19 16: 13: 01-- https: // web.foobar.com/ menghubungkan ke web.foobar.com (web.foobar.com) | 10.9.8.7 |: 443… . terhubung. Permintaan http dikirim, menunggu tanggapan… . 200 OK Panjang: 240 [Teks/html] Menyimpan ke: 'Indeks.html '100%[=============================================== ========================================>] 240 --.-K/S di 0s 2018-07-19 16:13:01 (7.04 MB/S) - 'Indeks.html 'disimpan [240/240] 
Menyalin

Output menunjukkan respons HTTP 301, dan kami dapat melihat bagaimana klien WGET kami mengikuti pengalihan untuk terhubung menggunakan protokol HTTPS. Secara default, lalu lintas SSL dicatat dalam berbagai logfil yang berbeda dari lalu lintas HTTP. Kita dapat menemukan yang di atas
permintaan masuk /var/log/httpd/ssl_access_log:

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

Kesimpulan

Dengan ini kami telah menyelesaikan tujuan kami, kami mengatur server web yang menggunakan HTTPS untuk berbicara dengan klien, dan mengarahkan permintaan HTTP yang masuk ke HTTPS juga.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Unduh Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Distro linux terbaik untuk pengembang
  • Perintah Linux: 20 perintah terpenting teratas yang Anda butuhkan untuk…
  • Panduan Pemecahan Masalah Umum GNU/Linux untuk Pemula
  • Mx linux vs ubuntu