Tento článek popisuje a ukazuje kroky k instalaci a konfiguraci httpd
služba pro poskytování obsahu přes HTTPS. Účelem použití HTTPS spíše než základního HTTP je to, že obsah je při přenosu zašifrován. To znamená, že pokud někdo zachytí provoz mezi vaším systémem a webovým serverem, nebude schopen vidět, co bylo odesíláno. Pokud jste přistupovali k základnímu HTTP serveru, mohli vidět obsah.
Předpoklady
Pro začátek je prostředí, které použijeme, základní virtuální stroj Red Hat Enterprise Linux (RHEL) 8.2. Ujistěte se, že je systém registrován buď na Red Hat Satellite nebo na zákaznickém portálu Red Hat. Potřebujete-li s tím pomoc, navštivte Pomocníka při registraci.
Po registraci systému a připojení správných předplatných nainstalujte httpd
a 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 ~]#
[ Čtenářům se také líbilo: Přežití bezpečnostního auditu s podnikovým Linuxem ]
Generování certifikátů
Po instalaci RPM vygenerujte certifikáty od vámi zvolené CA, pokud je ještě nemáte:
[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 ~]#
Můžete ověřit, že soubory byly vytvořeny:
[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
Nyní, když jsou certifikáty vygenerovány, je třeba vytvořit adresář, ze kterého bude váš webový server poskytovat obsah. Například:
[root@webserver ~]# mkdir /var/www/https
Ukázkový obsah můžete vložit do index.html soubor tam:
[root@webserver ~]# echo secure content > /var/www/https/index.html
[root@webserver ~]# cat /var/www/https/index.html
secure content
[root@webserver ~]#
Zabezpečení SELinux
Ověřte, že je nastaven správný kontext SELinux:
[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 ~]#
Také ověřte správnost kontextu SELinux pro váš index.html soubor:
[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 ~]#
Nyní, když máte správné certifikáty, adresář byl vytvořen a SELinux je správný, řekněte httpd
k použití kláves:
[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 ~]#
Nastavení brány firewall
httpd
Služba je nyní nakonfigurována, ale musíme se ujistit, že provoz je povolen přes bránu firewall. Povolíme port 443 a poté znovu načteme bránu firewall:
[root@webserver ~]# firewall-cmd --permanent --add-port=443/tcp
success
[root@webserver ~]# firewall-cmd --reload
success
Konečná konfigurace a testování
Povolte httpd
službu spustit při startu a poté restartovat httpd
služba:
[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 ~]#
Pomocí netstat
můžete ověřit, že služba běží a naslouchá na portu 443 :
[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 ~]#
V tomto okamžiku by webová služba měla správně fungovat a měla by být viditelná pro vaše klienty. Chcete-li to ověřit, zkuste se na web dostat pomocí webového prohlížeče. Pokud používáte certifikát podepsaný svým držitelem, budete jej muset přijmout:
Kliknutím na ikonu zámku v adresním řádku a výběrem možnosti „Zobrazit certifikát“ se zobrazí informace o certifikátu, které jste zadali:
Obsah budete moci vidět na /var/www/https/index.html soubor, který vám bude doručen přes HTTPS:
[ Chcete se dozvědět více o zabezpečení? Podívejte se na kontrolní seznam zabezpečení IT a dodržování předpisů. ]
Sbalit
Tento článek ukazuje, jak nainstalovat a nakonfigurovat server HTTPS a poté ověřit, zda služba funguje správně. Další konfigurace mohou zahrnovat nastavení vzdáleného protokolování, povolení PHP nebo konfiguraci databáze pro web.