配置Web服务器
一、使用Apache HTTPD配置基本Web服务器
(1)安装Apache HTTP服务器
[root@servera ~]# yum -y install httpd
httpd模块支持三个配置文件:
common:提供生产就绪部署(默认)
minimal:提供可以运行Apache web服务器的最小软件包集
devel:提供修改HTTPD所需的包
[root@servera ~]# yum module install httpd:2.4/common
(2)配置Apache HTTP服务器
Apache HTTP Server读取它的配置如下:
/etc/httpd/conf/httpd.conf 主配置文件。
/etc/httpd/conf.d/ 它提供了补充配置文件,包括在httpd.conf,且文件名以.conf 结尾。
/etc/httpd/conf.modules.d/ 提供了用于动态加载Apache模块的补充配置文件,且文件名以.conf结尾。
文件的下一部分将设置应用到服务器的各个部分,影响从特定位置提供内容的方式,等等。
<Directory />
AllowOverride none
Require all denied
</Directory>
# <Directory>块设置了应用于指定目录及其子目录的配置指令。
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
# 如果Apache dir_module模块被加载(默认),那么应用这些指令。DirectoryIndex指令指定如果一个URL被请求指向一个目录和一个index.html文件存在于该目录中,将该文件提供给客户端。
<Files ".ht*">
Require all denied
</Files>
# <Files>的工作方式类似于<Directory>块,但是应用于单个文件。在这种情况下,它阻止httpd提供敏感文件,如.htaccess和.htpasswd
(3)启动Apache HTTP服务器
[root@servera ~]# systemctl enable --now httpd
安装httpd包和httpd-manual包。
[root@servera ~]# yum -y install httpd httpd-manual
按要求修改各种
(4)配置Apache HTTPD虚拟主机
使用<virtua lHost>块指令覆盖虚拟主机主配置文件中的设置。每个虚拟主机都有自己的块。
在/etc/httpd/ conf.d/中单独的以.conf结尾的配置文件中配置虚拟主机是一种很好的做法。
<VirtualHost _default_:80>
DocumentRoot /srv/default/www
CustomLog "logs/default-vhost.log" combined
<Directory /srv/default/wwww>
Require all granted
</Directory>
</VirtualHost>
(5)使用 Apache HTTPD 配置 HTTPS
描述 TLS 协议:
TLS (Transport Layer Security)是HTTPS协议中用来保护web流量的真实性、保密性和完整性免遭攻击的协议。
TLS使用公钥加密建立安全的TLS会话。一个密钥能加密的,只有它匹配的密钥才能解密。
每个服务器都必须安装TLS证书。该证书包含关于该证书属于哪个服务器、过期时间以及密钥对的一半的信息;公共密钥。它还由证书颁发机构(CA)进行数字签名,该签名可用于验证服务器证书的真实性。服务器还必须安装与证书的公钥相匹配的私钥。
当客户端连接到服务器并请求TLS会话时,它们执行一次初始握手,以就双方都可以支持的一组加密密码达成一致。服务器提供客户端客户机使用证书中的信息和CA的签名对其进行验证。然后客户端使用公钥与服务器进行安全通信,并使用它建立一个更快的会话密钥,该会话密钥可用于快速加密和解密数据,然后用于实际的安全会话。
(6)配置基于 TLS 虚拟主机
使用TLS的虚拟主机与常规虚拟主机的配置方式相同,只是有一些附加参数。
<VirtualHost _default_:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
# 指定httpd可以用来与客户端通信的协议列表。您至少应该禁用已知安全问题的SSLV2和SSLV3。
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
# 列出httpd在与客户端通信时可以使用的加密密码。密码的选择会严重影响性能和安全性。
SSLHonorCipherOrder on
# 确保服务器选择ssLciphersuite列表中前面出现的密码。因此,应该首先列出最安全的密码。
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
CustomLog logs/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
</VirtualHost>
(7)HTTP客户端重定向到HTTPS站点
要设置这些重定向,请为与TLS保护的虚拟主机相同的ServerName和serverAlias配置一个HTTP虚拟主机。得到的虚拟主机可能看起来像这样: