本文介绍在RHEL 8系统上安装mod_ssl及mod_http2,以及安装Apache服务器,在Red Hat Enterprise 8中,Apache HTTP Server已更新至2.4.33版,以下图片是新功能截图,下面将讲详细的操作方法。
在RHEL 8上安装Apache RHEL 8中的Apache Web服务器包称为httpd,此包及其工具通过Application Stream存储库分发,使用下面命令在RHEL 8上安装httpd模块: $ sudo yum install @httpd
其它系统安装请参考如何在CentOS 7系统下安装Apache。 注:以上命令将安装以下httpd包: httpd:Apache HTTP Web服务器。 httpd-filesystem:包含Apache HTTP服务器的基本目录布局,包括对目录的正确权限。 httpd-tools:包含可与Apache HTTP服务器一起使用的工具。 mod_http2:Apache httpd模块,它在libnghttp2之上为httpd 2.4服务器实现HTTP2协议(h2+h2c)。 mod_ssl:通过安全套接字层(SSL)和传输层安全性(TLS)协议为Apache Web服务器提供强大的加密。 和其他所需的依赖– apr*。 默认情况下,httpd服务从以下位置读取配置: /etc/httpd/conf/httpd.conf - 这是主要的httpd配置文件。 /etc/httpd/conf.d/ - 这是主配置文件中包含的配置文件的辅助目录,可以将VirtualHosts之类的配置文件放在此目录中。 /etc/httpd/conf.modules.d/ - 包含加载RHEL中打包的动态模块的配置文件,首先处理此目录中的配置文件。 /usr/lib64/httpd/modules/ - 带有httpd模块的目录。
在RHEL 8上管理httpd服务 下面介绍如何管理Apache HTTP服务状态:启动、停止、重新启动和检查当前状态。 1、启动httpd服务 sudo systemctl start httpd.service 使用以下命令启用httpd服务在引导时自动启动: sudo systemctl enable httpd.service 下面的单个命令可用于启动并使服务在引导时启动: sudo systemctl enable --now httpd.service 确认服务是否设置为在引导时启动: $ sudo systemctl is-enabled httpd.service enabled 2、停止httpd服务 要停止正在运行的httpd服务,请输入以下命令: sudo systemctl stop httpd.service 要防止服务在引导时自动启动,请输入: sudo systemctl disable httpd.service 3、重新启动httpd服务 重启httpd服务有两种选择: 1].停止正在运行的httpd服务并立即重新启动它 - 在安装或删除动态加载的模块(如PHP)后很有用: sudo systemctl restart httpd.service 2].重新加载配置而不影响活动请求 - 正在运行的httpd服务将仅重新加载其配置文件,并且当前正在处理的所有请求将继续使用旧配置: sudo systemctl reload httpd.service 要检查配置是否存在可能的错误,请输入: $ sudo apachectl configtest Syntax OK 如果配置文件没有错误,应该获得Syntax OK的提示。
加载SSL模块 我们安装了mod_ssl模块,但必须先使用LoadModule指令加载模块,然后才能使用它。 要加载加载mod_ssl DSO,请在httpd.conf配置文件的末尾添加以下行: LoadModule ssl_module modules/mod_ssl.so 见下面的截图:
加载模块后重新启动Web服务器以重新加载配置: sudo systemctl restart httpd 默认的SSL配置文件/etc/httpd/conf.d/ssl.conf,可以通过修改此文件中的SSLProtocol指令来禁用SSL版本2和SSL版本3: SSLProtocol all -SSLv2 -SSLv3 下面的行将禁用除TLS 1和Up之外的所有SSL和TLS协议: SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2 进行更改后重新启动Apache守护程序: sudo systemctl restart httpd 要检查启用或禁用了哪些版本的SSL和TLS,可以使用openssl s_client -connect命令: openssl s_client -connect <hostname>:<port> -<protocol> 协议可以是-ssl2, -ssl3,-tls1,-tls1_1,-tls1_2。 见下面的例子: # Test if SSLv3 is enabled $ openssl s_client -connect localhost:443 -ssl3 # Test if TLSv1.2 is enable $ openssl s_client -connect localhost:443 -tls1_2 样本输出如下:
配置SSL密钥和证书的指令是: SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key
配置防火墙 如果正在运行firewalld服务,请允许端口80和443: $ sudo firewall-cmd --add-service={http,https} --permanent success $ sudo firewall-cmd --reload success $ firewall-cmd --list-services cockpit dhcpv6-client http https ssh
加载HTTP/2 Module – mod_http2 通过加载mod_http2模块启用对HTTP/2的支持: LoadModule http2_module modules/mod_http2.so 另外在Protocols指令中添加以下内容: Protocols h2 h2c http/1.1 Protocols指令参数的含义: h2 - 指示Apache通过SSL/TLS支持HTTP/2协议。 h2c - 指示Apache通过TCP支持HTTP/2。 http/1.1 - 如果客户端不接受HTTP/2,则通过HTTP/1.1提供请求。 重新启动Apache Web服务器以实现重新加载配置: sudo systemctl restart httpd
配置虚拟主机 Apache HTTP Server具有内置虚拟主机,允许根据请求的IP地址,主机名或端口提供信息,将VirtualHost配置文件放在/etc/httpd/conf.d/目录中。 这是一个例子: sudo vim /etc/httpd/conf.d/example.conf 数据类似于下面的数据: <VirtualHost *:80> ServerAdmin admin@example.com DocumentRoot "var/www/html/example" ServerName ywnz.com ServerAlias ywnz.com ErrorLog "/var/log/httpd/example-error_log" CustomLog "/var/log/httpd/example-access_log" common </VirtualHost> 注:ServerName必须是分配给托管站点的服务器的有效DNS名称。 重新启动httpd服务以激活新创建的虚拟主机: sudo systemctl restart httpd 至此,配置完成。
相关主题 |