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.