GNU/Linux >> Belajar Linux >  >> Linux

Menyiapkan server web untuk menggunakan HTTPS

Artikel ini membahas dan mendemonstrasikan langkah-langkah untuk menginstal dan mengkonfigurasi httpd layanan untuk menyajikan konten melalui HTTPS. Tujuan menggunakan HTTPS daripada HTTP dasar adalah bahwa konten dienkripsi saat sedang transit. Ini berarti bahwa jika seseorang menangkap lalu lintas antara sistem Anda dan server web, mereka tidak akan dapat melihat apa yang sedang dikirim. Jika Anda mengakses server HTTP dasar, mereka dapat melihat kontennya.

Prasyarat

Untuk memulai, lingkungan yang akan kita gunakan adalah mesin virtual dasar Red Hat Enterprise Linux (RHEL) 8.2. Pastikan sistem terdaftar ke Red Hat Satellite atau Red Hat Customer Portal. Untuk bantuan tentang itu, silakan lihat Asisten Pendaftaran.

Setelah sistem terdaftar dan langganan yang benar terpasang, instal httpd dan mod_ssl :

[root@webserver ~]# dnf install httpd mod_ssl
### Output truncated ###

Installed:
  apr-1.6.3-9.el8.x86_64                                                         apr-util-1.6.1-6.el8.x86_64                                                       
  apr-util-bdb-1.6.1-6.el8.x86_64                                                apr-util-openssl-1.6.1-6.el8.x86_64                                               
  httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64                            httpd-filesystem-2.4.37-21.module+el8.2.0+5008+cca404a3.noarch                    
  httpd-tools-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64                      mod_http2-1.11.3-3.module+el8.2.0+7758+84b4ca3e.1.x86_64                          
  mod_ssl-1:2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64                        redhat-logos-httpd-81.1-1.el8.noarch                                              

Complete!
[root@webserver ~]#

[ Pembaca juga menyukai: Bertahan dari audit keamanan dengan Linux perusahaan ]

Membuat sertifikat

Setelah RPM diinstal, buat sertifikat dari CA pilihan Anda, jika Anda belum memilikinya:

[root@webserver ~]# openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/httpd.key -x509 -days 3650 -out /etc/pki/tls/certs/httpd.crt
Generating a RSA private key
..............+++++
..........................................................................+++++
writing new private key to '/etc/pki/tls/private/httpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields, but you can leave some blank
For some fields, there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:North Carolina
Locality Name (eg, city) [Default City]:Holly Springs
Organization Name (eg, company) [Default Company Ltd]:Example Co
Organizational Unit Name (eg, section) []:Example Unit
Common Name (eg, your name or your server's hostname) []:webserver
Email Address []:root@localhost

[root@webserver ~]#

Anda dapat memverifikasi file yang dibuat:

[root@webserver ~]# ls -l /etc/pki/tls/private/ /etc/pki/tls/certs/
/etc/pki/tls/certs/:
total 4
lrwxrwxrwx. 1 root root   49 Oct 18  2019 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx. 1 root root   55 Oct 18  2019 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
-rw-r--r--. 1 root root 1489 Oct  1 12:02 httpd.crt

/etc/pki/tls/private/:
total 4
-rw-------. 1 root root 1704 Oct  1 12:00 httpd.key

Sekarang setelah sertifikat dibuat, Anda perlu membuat direktori tempat server web Anda akan menyajikan konten. Misalnya:

[root@webserver ~]# mkdir /var/www/https

Anda dapat menempatkan konten sampel di index.html file di sana:

[root@webserver ~]# echo secure content > /var/www/https/index.html
[root@webserver ~]# cat /var/www/https/index.html
secure content
[root@webserver ~]#

keamanan SELinux

Verifikasi bahwa konteks SELinux yang benar telah disetel:

[root@webserver ~]# ll -Z /var/www
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_script_exec_t:s0 6 Dec  2  2019 cgi-bin
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0     6 Dec  2  2019 html
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Oct  1 12:34 https

[root@webserver ~]#

Verifikasi juga bahwa konteks SELinux benar untuk index.html Anda berkas:

[root@webserver ~]# ll -Z /var/www/https/index.html
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 15 Oct  1 15:07 /var/www/https/index.html

[root@webserver ~]#

Sekarang Anda memiliki sertifikat yang benar, direktori telah dibuat, dan SELinux sudah benar, beri tahu httpd untuk menggunakan tombol:

[root@webserver ~]# vi /etc/httpd/conf.d/ssl.conf
[root@webserver ~]# grep -e httpd.crt -e httpd.key /etc/httpd/conf.d/ssl.conf -B1
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/httpd.crt
--
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
[root@webserver ~]#
[root@webserver ~]# grep DocumentRoot /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/https"
#DocumentRoot "/var/www/html"

[root@webserver ~]#

Setelan firewall

httpd service sekarang telah dikonfigurasi, tetapi kita perlu memastikan bahwa lalu lintas diizinkan melalui firewall. Kami akan mengaktifkan port 443, lalu memuat ulang firewall:

[root@webserver ~]# firewall-cmd --permanent --add-port=443/tcp
success

[root@webserver ~]# firewall-cmd --reload
success

Konfigurasi dan pengujian akhir

Aktifkan httpd layanan untuk memulai saat boot dan kemudian restart httpd layanan:

[root@webserver ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@webserver ~]# systemctl restart httpd
[root@webserver ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-10-01 12:35:26 EDT; 1min 30s ago
     Docs: man:httpd.service(8)
 Main PID: 33387 (httpd)
   Status: "Total requests: 1; Idle/Busy workers 100/0;Requests/sec: 0.0112; Bytes served/sec:  40 B/sec"
    Tasks: 213 (limit: 74790)
   Memory: 35.6M
   CGroup: /system.slice/httpd.service
           ├─33387 /usr/sbin/httpd -DFOREGROUND
           ├─33390 /usr/sbin/httpd -DFOREGROUND
           ├─33391 /usr/sbin/httpd -DFOREGROUND
           ├─33392 /usr/sbin/httpd -DFOREGROUND
           └─33393 /usr/sbin/httpd -DFOREGROUND

Oct 01 12:35:26 webserver.example.com systemd[1]: Starting The Apache HTTP Server...
Oct 01 12:35:26 webserver.example.com systemd[1]: Started The Apache HTTP Server.
Oct 01 12:35:26 webserver.example.com httpd[33387]: Server configured, listening on: port 443, port 80

[root@webserver ~]#

Anda dapat memverifikasi bahwa layanan berjalan dan mendengarkan pada port 443 dengan menggunakan netstat :

[root@webserver ~]# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.124.1:53        0.0.0.0:*               LISTEN      1505/dnsmasq       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1438/sshd          
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1904/cupsd         
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd          
tcp6       0      0 :::80                   :::*                    LISTEN      33387/httpd        
tcp6       0      0 :::22                   :::*                    LISTEN      1438/sshd          
tcp6       0      0 ::1:631                 :::*                    LISTEN      1904/cupsd         
tcp6       0      0 :::443                  :::*                    LISTEN      33387/httpd        
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd          

[root@webserver ~]#

Pada titik ini, layanan web harus berfungsi dengan benar dan dapat dilihat oleh klien Anda. Untuk memverifikasi itu, coba gunakan browser web Anda untuk membuka situs. Jika Anda menggunakan sertifikat yang ditandatangani sendiri, Anda harus menerimanya:

Dengan mengeklik ikon kunci di bilah alamat, lalu memilih "Lihat Sertifikat", Anda akan melihat informasi sertifikat yang Anda masukkan:

Anda akan dapat melihat konten di /var/www/https/index.html file yang disajikan kepada Anda melalui HTTPS:

[ Ingin mempelajari lebih lanjut tentang keamanan? Lihat daftar periksa keamanan dan kepatuhan TI. ] 

Menutup

Artikel ini telah menunjukkan kepada Anda cara menginstal dan mengkonfigurasi server HTTPS dan kemudian memverifikasi bahwa layanan berfungsi dengan benar. Konfigurasi tambahan mungkin termasuk menyiapkan pencatatan log jarak jauh, mengaktifkan PHP, atau mengonfigurasi database untuk situs web.


Linux
  1. Cara Menggunakan Wireshark Tshark untuk Menentukan File, Waktu, Batas Pengambilan Buffer

  2. Menjalankan notifikasi-kirim sebagai root

  3. Memulihkan Kata Sandi Root

  1. Cara menggunakan BusyBox di Linux

  2. Bagaimana saya menggunakan cron di Linux

  3. Gunakan find dengan aman dengan sudo

  1. Cara memaksa Apache untuk menggunakan HTTPS

  2. Alihkan ke HTTPS

  3. Mengapa kita menggunakan su - dan bukan hanya su?