Apache HTTP 服务器安装指南


Red Hat JBoss Core Services 2.4.51

用于红帽 JBoss 中间件产品。

Red Hat Customer Content Services

摘要

在支持的操作系统中安装、升级和配置 Red Hat JBoss Core Services Apache HTTP 服务器。

对红帽文档提供反馈

要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。

流程

  1. 单击以下链接 以创建 ticket
  2. Summary 中输入问题的简短描述。
  3. Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
  4. Submit 创建问题,并将问题路由到适当的文档团队。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

第 1 章 JBCS Apache HTTP 服务器安装简介

红帽 JBoss 核心服务(JBCS)提供了一组补充软件,包括 Apache HTTP 服务器,可用于各种红帽 JBoss 中间件产品。红帽将此补充软件打包在 JBCS 下,以便更快地发布更新以及更一致的更新体验。

有关 JBCS 支持的组件的完整列表,请参阅 Core Services Apache HTTP Server 组件详情 网页。

注意

在尝试访问 Core Services Apache HTTP Server 组件详情 网页前,请确保您有有效的红帽订阅,并登录到红帽客户门户网站。

1.1. JBCS Apache HTTP 服务器

红帽 JBoss 核心服务(JBCS)提供多个红帽 JBoss 中间件产品使用的 Apache HTTP 服务器分布。Apache HTTP 服务器处理 Web 客户端通过 Hypertext 传输协议(HTTP)发送的请求。

JBoss 中间件产品的 Apache HTTP 服务器发行版本

在较旧的 JBoss 产品版本中,每个 JBoss 中间件产品都提供单独的 Apache HTTP 服务器分发。从以下产品版本开始,每个 JBoss 中间件产品都使用 Apache HTTP 服务器的 JBCS 发行版:

  • Red Hat JBoss Enterprise Application Platform (JBoss EAP) 7.0 或更高版本
  • Red Hat JBoss Web Server 3.1 或更高版本
Apache HTTP 服务器的 JBCS 和 RHEL 发行版之间的区别

JBCS 和 Red Hat Enterprise Linux (RHEL)提供 Apache HTTP 服务器的独立分发。

重要

在 RHEL 9 中,JBCS 不提供 Apache HTTP 服务器的 RPM 发行版。JBCS 仅为 RHEL 9 系统提供 Apache HTTP 服务器的存档文件分发。

与早期 RHEL 版本上的 JBCS 版本不同,适用于 RHEL 9 系统的 Apache HTTP 服务器的 JBCS 发行版取决于 Apache HTTP 服务器 httpd 软件包的 RHEL 发行版。JBCS 在 RHEL 9 上提供了一个存档文件分发,以支持可以同时运行多个 Apache HTTP 服务器实例。

考虑 JBCS 和 RHEL 提供的 Apache HTTP 服务器发行版本之间的以下区别:

在 RHEL 版本 7 和 8 中
  • 您可以从存档文件或 RPM 软件包安装 JBCS Apache HTTP 服务器。您只能从 RPM 软件包安装 RHEL Apache HTTP 服务器。
  • 只有 JBCS Apache HTTP 服务器提供负载均衡 HTTP 连接器 mod_jkmod_proxy_cluster。RHEL Apache HTTP 服务器不提供这些模块。

    注意

    在 JBCS 2.4.51 发行前,mod_proxy_cluster 连接器名为 mod_cluster

  • 在 RHEL 7 上,只有 JBCS Apache HTTP 服务器提供 mod_proxy_uwsgi 模块。从 RHEL 8 开始,Apache HTTP 服务器的 JBCS 和 RHEL 发行版都提供 mod_proxy_uwsgi 模块。
对于 RHEL 9
  • 与 RHEL 7 和 RHEL 8 上的 JBCS 发行版本不同,RHEL 9 上的 JBCS 发行版本基于 Apache HTTP Server httpd 软件包的 RHEL 发行版。因此,RHEL 9 上的 JBCS 与早期 RHEL 版本上的 Apache HTTP 服务器的 JBCS 发行版相比,有一些行为差异。如需更多信息,请参阅 不同 RHEL 版本的 JBCS 发行版之间的区别
  • JBCS 仅提供 Apache HTTP 服务器的存档文件分发。如果要从 RPM 软件包安装 Apache HTTP 服务器,则唯一选项是使用 Application Streams 安装 httpd 软件包的 RHEL 发行版。
  • JBCS 提供的 Apache HTTP 服务器版本与 RHEL 通过 Application Streams 功能提供的 Apache HTTP 服务器版本不同。
  • Apache HTTP 服务器的 JBCS 和 RHEL 发行版提供 mod_jk 连接器和 mod_proxy_cluster 连接器的相同副本。
在所有 RHEL 版本中
  • JBCS Apache HTTP 服务器使用顶级 jbcs-httpd24-2.4/httpd 安装目录。RHEL Apache HTTP 服务器使用标准 RHEL 目录来安装 httpd 软件包,如 /etc/httpdusr/share/httpdvar/log/httpd 等等。
  • 当您从归档文件或使用 groupinstall 选项安装 Apache HTTP 服务器的 JBCS 发行版时,您还要自动安装 mod_jkmod_proxy_cluster 连接器。
  • JBCS Apache HTTP 服务器不提供或支持 mod_php 模块。只有 RHEL Apache HTTP 服务器支持 mod_php 模块。
不同 RHEL 版本的 JBCS 发行版本之间的行为区别

与 RHEL 7 或 RHEL 8 上的 JBCS 2.4.51 不同,RHEL 9 系统的 JBCS 2.4.51 发行版基于 Apache HTTP 服务器 httpd 软件包的 RHEL 发行版。这与红帽发布 RHEL 9 的 httpd 软件包的方式有所改变,有助于为 Apache HTTP 服务器用户提供更一致且简化的用户体验。

因此,RHEL 9 上的 JBCS 2.4.51 与早期 RHEL 版本上的 JBCS 2.4.51 与 JBCS 2.4.51 相比有一定的行为。

请考虑以下指南:

  • 在 RHEL 9 上,mod_security 模块不支持 SecCollectionGCFrequency 指令来指定垃圾回收频率。JBCS 在 RHEL 7 和 RHEL 8 上提供的 mod_security 模块支持 SecCollectionGCFrequency 指令。
  • 在 RHEL 9 上,mod_deflate 模块不支持 DeflateAlterEtag 指令,用于指定在压缩响应时如何更改 ETag 标头。JBCS 在 RHEL 7 和 RHEL 8 上提供的 mod_deflate 模块支持 DeflateAlterEtag 指令。
  • 在 RHEL 9 中,httpd.conf.sample 文件不包括以下内容:

    • 用于指定服务器记录守护进程的进程 ID 的文件的默认 PidFile 指令
    • mod_mime 部分中的 AddLanguage 指令列表,用于将特定文件名扩展映射到特定内容语言
    • 用于基于 Web 的分布式编写和版本控制(WebDav)的 web_dav 模块的配置部分.

    JBCS 上提供的 httpd.conf.sample 文件包括在 RHEL 7 和 RHEL 8 上,包括上述所有内容。

红帽 JBoss 核心服务(JBCS)为不同版本的 Red Hat Enterprise Linux (RHEL)和 Windows Server 操作系统提供 Apache HTTP 服务器分发。

考虑在支持的操作系统中安装 JBCS Apache HTTP 服务器的以下准则:

  • 在所有支持的 RHEL 和 Windows Server 版本中,您可以使用每个平台可用的归档安装文件来安装 JBCS Apache HTTP 服务器。
  • 在 RHEL 版本 7 和 8 中,您可以使用 Red Hat Package Manager (RPM)软件包安装 JBCS Apache HTTP 服务器。
  • 在 RHEL 9 中,您无法使用 RPM 软件包安装 JBCS Apache HTTP 服务器。如果要在 RHEL 9 上从 RPM 软件包安装 Apache HTTP 服务器,则唯一选项是使用 Application Streams 安装 Apache HTTP 服务器的 RHEL 发行版本。

1.3. 将现有 JBCS 安装升级到 2.4.51 发行版本

如果您之前安装了 Red Hat JBoss Core Services (JBCS) 2.4.37 或更早版本,您可以将现有的 JBCS 安装升级到最新的 2.4.51 版本。升级 JBCS 的步骤因您从存档文件还是 RPM 软件包安装产品而有所不同。

1.3.1. 从存档文件安装时升级现有的 JBCS 安装

如果您之前从存档文件安装了 JBCS Apache HTTP Server 2.4.37 或更早版本,您可以升级到最新的 2.4.51 版本。

升级过程包括以下步骤:

  1. 安装 Apache HTTP Server 2.4.51
  2. 设置 Apache HTTP Server 2.4.51
  3. 删除较早版本的 Apache HTTP 服务器

先决条件

  • 如果您使用 Red Hat Enterprise Linux (RHEL),则具有 root 用户访问权限。
  • 如果使用 Windows Server,则具有管理访问权限。
  • 您有从存档文件安装的 JBCS Apache HTTP Server 2.4.37 或更早版本的现有安装。

流程

  1. 关闭 Apache HTTP 服务器 2.4.37 的任何正在运行的实例。
  2. 备份 Apache HTTP Server 2.4.37 安装和配置文件。
  3. 为当前系统使用存档文件安装方法安装 Apache HTTP Server 2.4.51。如需更多信息,请参阅本节末尾的 附加资源
  4. 将您的配置从 Apache HTTP 服务器版本 2.4.37 迁移到版本 2.4.51。

    注意

    自 Apache HTTP Server 2.4.37 发行版本以来,JBCS 配置文件可能已更改。更新 2.4.51 版本配置文件,而不是使用不同版本(如 Apache HTTP Server 2.4.37)的配置文件覆盖它们。

  5. 删除 Apache HTTP Server 2.4.37 根目录。

如果您之前从 RPM 软件包安装了 JBCS Apache HTTP Server 2.4.37 或更早版本,您可以使用 yum groupupdate 命令升级到最新的 2.4.51 版本。

先决条件

  • 您有从 RHEL 7 或 RHEL 8 上的 RPM 软件包安装的 JBCS Apache HTTP Server 2.4.37 或更早版本的现有安装。

流程

  • 以 root 用户身份输入以下命令:

    # yum groupupdate jbcs-httpd24
    Copy to Clipboard Toggle word wrap

1.4. RHEL 7 和 RHEL 8 之间的主要区别

本节概述 Red Hat Enterprise Linux (RHEL) 8 中引入的一些关键更改。

删除的安全功能
RHEL 7 中弃用了完全由数字组成的用户和组群名称,其支持在 RHEL 8 中已完全删除。
内存管理
在 RHEL 7 中,现有内存总线具有 48/46 位的虚拟/物理内存寻址的容量,而 Linux 内核则实施 4 级页表,以将这些虚拟地址管理到物理地址。使用扩展地址范围时,RHEL 8 中的内存管理支持实现 5 级页表,以允许处理扩展的地址范围。在 RHEL 8 中,默认禁用对 5 级页表的支持,即使系统支持此功能。
XFS 支持
RHEL 7 只能在只读模式下使用共享 copy-on-write 数据扩展挂载 XFS 文件系统。在 RHEL 8 中,XFS 文件系统支持共享的 copy-on-write 数据扩展功能。这个功能可让两个或者多个文件共享一组通用的数据块。
NFS 配置
在 RHEL 7 中,NFS 配置位于 /etc/sysconfig/nfs 文件中。在 RHEL 8 中,NFS 配置位于 /etc/nfs.conf 文件中。

1.5. RHEL 8 和 RHEL 9 之间的主要区别

本节概述 Red Hat Enterprise Linux (RHEL) 9 中引入的一些关键更改。

应用程序流增强

RHEL 8 引入了一个名为 Application Streams 的功能。RHEL 使用 Application Streams 提供和更新用户空间组件的多个版本,如应用程序、运行时语言和数据库频率高于核心操作系统软件包。每个 Application Stream 代表一个组件的特定版本,Application Stream 中的每个组件都有定义的生命周期。Application Streams 为用户提供了更大的灵活性,使用满足特定用例和工作负载的组件的组件版本,而不影响平台或部署的底层稳定性。

在 RHEL 8 中,红帽将内容打包在 Application Streams 中,作为 RPM 软件包、模块(软件包组)和 Software Collections 的组合。RHEL 9 通过提供初始 Application Stream 版本来进一步增强 Application Streams 功能,您可以使用标准 dnf install 命令作为 RPM 软件包安装

Apache 连接器和负载均衡器的可用性

RHEL 9 提供 Apache Tomcat Connector (mod_jk)和 JBoss HTTP Connector (mod_proxy_cluster)的分发,用于对后端应用服务器的 Web 客户端请求进行负载平衡。mod_jkmod_proxy_cluster 的 RHEL 发行版与这些模块的 JBCS 发行版相同。

安装 Apache HTTP 服务器的 RHEL 发行版不会自动安装 mod_jkmod_proxy_cluster 模块。有关从 RHEL 9 上的 RPM 软件包安装 mod_jkmod_proxy_cluster 的更多信息,请参阅 Apache HTTP 服务器连接器和负载平衡指南

在 Red Hat Enterprise Linux (RHEL)版本 7、8 和 9 中,Red Hat JBoss Core Services (JBCS)提供了 Apache HTTP 服务器的一个发行版本,您可以从存档文件中安装。您可以从红帽客户门户网站上的 Software Downloads 页面下载并提取存档文件。您必须为原始 2.4.51 发行版本安装基本归档文件。您还可以安装最新的服务包版本(若有)。

从存档文件安装 Apache HTTP 服务器时,您可以以不同的方式管理该产品。例如,您可以在系统启动时使用系统守护进程,或者从命令行管理 Apache HTTP 服务器。

注意

从 2.4.51 Service Pack 2 以后,JBCS 支持从 RHEL 9 上的存档文件安装 Apache HTTP 服务器。对于 RHEL 9 上的 JBCS Apache HTTP 服务器安装,支持的 Apache HTTP 服务器版本为 2.4.53。

您可以从红帽客户门户网站上的 软件下载页面 下载 Apache HTTP Server 归档文件。根据您使用的 Red Hat Enterprise Linux (RHEL)版本,下载存档文件的步骤略有不同。

注意

如果您对预期的安装目录有写入权限,您可以使用非 root 权限安装归档文件。

先决条件

  • 您已安装了 elinkskrb5-workstationmailcap 软件包。

    如果要安装这些软件包,请以 root 用户身份输入以下命令:

    # yum install elinks krb5-workstation mailcap
    Copy to Clipboard Toggle word wrap

流程

  1. 打开浏览器并登录到红帽客户门户网站中的 Software Downloads 页面。
  2. Product 下拉菜单中,选择 Apache HTTP Server
  3. Version 下拉菜单中选择正确的 JBCS 版本。
  4. 根据您使用的 RHEL 版本,执行以下步骤之一:

    • 如果您在 Releases 选项卡中使用 RHEL 7,点 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 for RHEL 7 x86_64 文件旁边的 Download
    • 如果您使用 RHEL 8,在 Releases 选项卡中点 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 for RHEL 8 x86_64 文件旁的 Download
    • 如果您使用 RHEL 9,点 安全公告 标签页。然后单击 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 Patch 02 for RHEL 9 x86_64 文件旁边的 Download

      注意

      Red Hat JBoss Core Services Apache HTTP Server 2.4.51 Patch 02 for RHEL 9 x86_64 文件是 RHEL 9 上安装 JBCS Apache HTTP 服务器的基本存档文件。

      虽然 2.4.51 命名惯例,RHEL 9 的 JBCS 归档文件提供了 Apache HTTP Server 2.4.53 的发布。

  5. 将下载的存档文件提取到您的安装目录中。

    注意

    在 RHEL 系统上,在 /opt/ 目录中安装 Apache HTTP 服务器。

    归档文件的提取会自动为 Apache HTTP 服务器创建顶级 jbcs-httpd24-2.4/httpd 目录。本文档将 jbcs-httpd24-2.4/httpd 目录称为 HTTPD_HOME

  6. 要安装最新的服务包版本(若有),请执行以下步骤:

    1. 在 Software Downloads 页面中,点 安全公告 选项卡。
    2. 安全公告 选项卡中,点与您的系统平台和架构匹配的 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 Patch 归档文件旁边的 Download

      例如,如果您要在 RHEL 8 上安装 Apache HTTP Server 2.4.51 的 Service Pack X 版本,请单击 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 for RHEL 8 x86_64 文件旁边的 Download

      注意

      服务包的发布是累积的。通过下载最新的服务包版本,您也会自动安装任何之前的服务包版本。

当您从 RHEL 上的存档文件安装 JBCS Apache HTTP 服务器时,您可以从命令行直接启动和停止 Apache HTTP 服务器。在命令行中运行 Apache HTTP 服务器前,您必须执行以下一系列配置任务:

2.2.1. 创建 Apache 用户

首次从命令行运行 Apache HTTP 服务器之前,您必须创建 apache 用户帐户和组。您还必须将 Apache 目录的所有权分配给 apache 用户,以便用户可以运行 Apache HTTP 服务器。

注意

您必须以 root 用户身份执行此流程中的所有步骤。

流程

  1. 在命令行中,前往 HTTPD_HOME 目录。
  2. 运行以下命令来创建 apache 用户组:

    # groupadd -g 48 -r apache
    Copy to Clipboard Toggle word wrap
  3. 要在 apache 用户组中创建 apache 用户,请输入以下命令:

    # /usr/sbin/useradd -c "Apache" -u 48 -g apache -s /sbin/nologin -r apache
    Copy to Clipboard Toggle word wrap
  4. 要将 Apache 目录的所有权分配给 apache 用户,请输入以下命令:

    # chown -R apache:apache *
    Copy to Clipboard Toggle word wrap

验证

  • 要验证 apache 用户是否为目录的所有者,请输入以下命令:

    # ls -l
    Copy to Clipboard Toggle word wrap

2.2.2. 禁用或启用 SSL 支持

在运行 Apache HTTP 服务器前,您可以选择通过重命名 SSL 配置文件来禁用或启用 SSL 支持。Apache HTTP 服务器默认支持 SSL。

流程

  1. 前往 HTTPD_HOME/conf.d/ 目录。
  2. 要启用或禁用 SSL,请执行以下步骤之一:

    • 如果要禁用 SSL,请将 ssl.conf 重命名为 ssl.conf.disabled
    • 如果要重新启用 SSL,请将 ssl.conf.disabled 重命名为 ssl.conf

2.2.3. 运行 Apache HTTP 服务器安装后脚本

首次从命令行运行 Apache HTTP 服务器之前,您必须运行 Apache HTTP 服务器安装后脚本。

流程

  1. 在命令行中,前往 HTTPD_HOME 目录。
  2. 使用以下命令:

     ./.postinstall
    Copy to Clipboard Toggle word wrap

当您从 RHEL 上的存档文件安装 JBCS Apache HTTP 服务器时,您可以从命令行直接启动 Apache HTTP 服务器。

流程

  1. 在命令行中,前往 HTTPD_HOME/sbin/ 目录。
  2. 以 root 用户身份输入以下命令:

     ./apachectl start
    Copy to Clipboard Toggle word wrap

当您从 RHEL 上的存档文件安装 JBCS Apache HTTP 服务器时,您可以直接从命令行停止 Apache HTTP 服务器的运行实例。

流程

  1. 在命令行中,前往 HTTPD_HOME/sbin/ 目录。
  2. 以 root 用户身份输入以下命令:

     ./apachectl stop
    Copy to Clipboard Toggle word wrap

当您从 RHEL 上的存档文件安装 JBCS Apache HTTP 服务器时,您可以以没有 root 特权的用户的身份从命令行启动 Apache HTTP 服务器。在这种情况下,您可以使用非 root 用户帐户,如 apache 用户。

流程

  1. 停止 Apache HTTP 服务器的所有实例:

    pkill httpd
    Copy to Clipboard Toggle word wrap
  2. HTTPD_HOME/conf/httpd.conf 文件中,将 http 监听端口设置为高于 1024:

    Listen 2080
    ServerName <hostname>:2080
    Copy to Clipboard Toggle word wrap
  3. HTTPD_HOME/conf.d/ssl.conf 文件中,将 https 监听端口设置为高于 1024:

    Listen 2443
    Copy to Clipboard Toggle word wrap
  4. 更改 logs 目录的所有权:

    chown -R apache:apache HTTPD_HOME/logs/
    Copy to Clipboard Toggle word wrap
  5. 更改 run 目录的所有权:

    chown -R apache:apache HTTPD_HOME/var/run/
    Copy to Clipboard Toggle word wrap
  6. 验证 httpd 是否只在 apache 用户而不是 rootapache 用户中运行:

    $ ps -eo euser,egroup,comm | grep httpd
    Copy to Clipboard Toggle word wrap

    这个命令生成以下输出类型:

    apache   apache   httpd
    apache   apache   httpd
    apache   apache   httpd
    ...
    Copy to Clipboard Toggle word wrap
    重要

    限制 apache 用户的文件权限并启用 SELinux。这有助于防止以下情况:

    • 网站用户未授权访问或修改文件和目录
    • 对 Apache HTTP 服务器配置文件不需要的更改

当您从 RHEL 上的存档文件安装 JBCS Apache HTTP 服务器时,您可以使用系统守护进程来执行管理任务。将 Apache HTTP 服务器与系统守护进程搭配使用,可以在系统引导时启动 Apache HTTP 服务器服务。系统守护进程还提供 start、stop 和 status 检查功能。

在 RHEL 版本 7、8 和 9 中,默认的系统守护进程是 systemd

重要

RHEL 6 不再被支持,之后从文档中删除了。

先决条件

流程

  1. 要确定哪个系统守护进程正在运行,请输入以下命令:

    $ ps -p 1 -o comm=
    Copy to Clipboard Toggle word wrap

    如果 systemd 正在运行,则会显示以下输出:

    systemd
    Copy to Clipboard Toggle word wrap
  2. 要为 systemd 设置 Apache HTTP 服务器,以 root 用户身份运行 .postinstall.systemd 脚本:

    # cd HTTPD_HOME
    # sh httpd/.postinstall.systemd
    Copy to Clipboard Toggle word wrap
  3. 要使用 systemd 控制 Apache HTTP 服务器,请以 root 用户身份输入以下命令:

    • 启用 Apache HTTP 服务器服务在系统启动时启动:

      # systemctl enable jbcs-httpd24-httpd.service
      Copy to Clipboard Toggle word wrap
    • 启动 Apache HTTP 服务器:

      # systemctl start jbcs-httpd24-httpd.service
      Copy to Clipboard Toggle word wrap
    • 停止 Apache HTTP 服务器:

      # systemctl stop jbcs-httpd24-httpd.service
      Copy to Clipboard Toggle word wrap
    • 验证 Apache HTTP 服务器的状态:

      # systemctl status jbcs-httpd24-httpd.service
      Copy to Clipboard Toggle word wrap
      注意

      任何用户都可以运行 systemctl status 命令。

重要

要恢复 .postinstall.systemd 脚本影响的任何更改,您可以输入以下命令:

# cd HTTPD_HOME
# sh httpd/.postinstall.services.cleanup
Copy to Clipboard Toggle word wrap

有关使用 systemd 的更多信息,请参阅附加资源 链接。

2.7. Apache HTTP 服务器的 SELinux 策略

您可以使用 Security-Enhanced Linux (SELinux)策略来定义 Apache HTTP 服务器的访问控制。这些策略是一组决定对产品的访问权限的规则。

2.7.1. SELinux 策略信息

SELinux 安全模型由内核强制执行,并确保应用程序对文件系统位置和端口等资源具有有限的访问权限。SELinux 策略可确保任何已被破坏或配置不良的进程被限制或阻止运行。

Apache HTTP 服务器安装中的 jbcs-httpd24-httpd-selinux 软件包提供 mod_proxy_cluster 策略。下表包含有关所提供的 SELinux 策略的信息。

Expand
表 2.1. RPM 和默认 SELinux 策略
名称端口信息策略信息

mod_proxy_cluster

httpd_port_t 添加两个端口(适用于 TCP666623364) 以允许 httpd 进程使用它们。

安装后脚本配置 /var/cache/mod_proxy_cluster 的上下文映射,使 httpd 进程在这个位置写入。

在本发行版本中,存档软件包提供 SELinux 策略。根 Apache HTTP 服务器文件夹包含一个 .postinstall.selinux 文件。如果需要,您可以运行 .postinstall.selinux 脚本。

重要

默认情况下,Apache HTTP 服务器提供的 SELinux 策略未激活,并且 Apache HTTP 服务器进程在 unconfined_t 域中运行。此域不限制进程。如果您选择不启用提供的 SELinux 策略,请限制 apache 用户的文件访问权限,因此 apache 用户只能访问 Apache HTTP 服务器运行时所需的文件和目录。

流程

  1. 安装 selinux-policy-devel 软件包:

    yum install -y selinux-policy-devel
    Copy to Clipboard Toggle word wrap
  2. 运行 .postinstall.selinux 脚本:

    cd <httpd_home>
    sh .postinstall.selinux
    Copy to Clipboard Toggle word wrap
  3. 创建并安装 SELinux 模块:

    cd <httpd_home>/selinux/
    make -f /usr/share/selinux/devel/Makefile
    semodule -i jbcs-httpd24-httpd.pp
    Copy to Clipboard Toggle word wrap
  4. 为 Apache HTTP 服务器应用 SELinux 上下文:

    restorecon -r <httpd_home>
    Copy to Clipboard Toggle word wrap
  5. 为 Apache HTTP 服务器所需端口添加访问权限:

    semanage port -a -t http_port_t -p tcp 6666
    semanage port -a -t http_port_t -p udp 23364
    Copy to Clipboard Toggle word wrap
  6. 启动 Apache HTTP 服务器服务:

    <httpd_home>/sbin/apachectl start
    Copy to Clipboard Toggle word wrap
  7. 检查预期 httpd_t 的正在运行的进程的上下文:

    $ ps -eZ | grep httpd | head -n1
    
    unconfined_u:unconfined_r:httpd_t:s0-s0:c0.c1023 2864 ? 00:00:00 httpd
    Copy to Clipboard Toggle word wrap
  8. 验证 httpd 目录的上下文。例如:

    ls -lZ <httpd_home>/logs/
    Copy to Clipboard Toggle word wrap

在 Red Hat Enterprise Linux (RHEL)版本 7 和 8 中,Red Hat JBoss Core Services (JBCS)提供了 Apache HTTP 服务器的发行版本,您可以从 RPM 软件包安装。JBCS Apache HTTP 服务器的 RPM 安装软件包可从红帽订阅管理中获得。从 RPM 软件包安装 Apache HTTP 服务器,将 Apache HTTP 服务器作为服务安装。

重要

JBCS 为 RHEL 版本 7 和 8 提供 Apache HTTP 服务器的 RPM 发行版。JBCS 没有为 RHEL 9 提供 Apache HTTP 服务器的 RPM 发行版。

如果要在 RHEL 9 中从 RPM 软件包安装 Apache HTTP 服务器,则必须使用 RHEL 的 Application Streams 功能。如需更多信息,请参阅使用 Application Streams 在 RHEL 9 上安装 Apache HTTP 服务器

3.1. 将订阅附加到 RHEL

在为 Apache HTTP 服务器下载并安装 RPM 软件包前,您必须将订阅附加到 Red Hat Enterprise Linux (RHEL)。您可以通过 Red Hat Subscription Management 注册您的系统,并订阅相应的 Content Delivery Network (CDN)软件仓库来附加订阅。您可以随后执行一些验证步骤,以确保订阅提供所需的 CDN 存储库。

流程

  1. 登录到 Red Hat Subscription Management 网页。
  2. Systems 选项卡。
  3. 点击您要添加订阅的系统的 Name
  4. Details 选项卡更改为 Subscriptions 选项卡,然后单击 Attach Subscriptions
  5. 选中您要附加的订阅旁边的复选框,然后单击 Attach Subscriptions

验证

  1. 登录红帽订阅 网页
  2. Subscription Name 列中,点您要选择的订阅。
  3. 所提供的产品 下,您需要 Red Hat JBoss Core Services

有关注册您安装的 RHEL 版本的更多信息,请参阅附加资源 链接。

您可以使用 YUM 软件包管理器从 RHEL 7 或 RHEL 7 上的 RPM 软件包安装 JBCS Apache HTTP 服务器。

先决条件

流程

  1. 要为您的操作系统版本订阅 Apache HTTP 服务器 CDN 软件仓库,请以 root 用户身份输入以下命令:

    # subscription-manager repos --enable <repository>
    Copy to Clipboard Toggle word wrap
    注意

    如果使用 RHEL 7,请将 < repository&gt; 替换为 jb-coreservices-1-for-rhel-7-server-rpms

    如果您使用 RHEL 8,请将 < repository&gt; 替换为 jb-coreservices-1-for-rhel-8-x86_64-rpms

  2. 要安装 Apache HTTP 服务器,请以 root 用户身份输入以下命令:

    # yum groupinstall jbcs-httpd24
    Copy to Clipboard Toggle word wrap

3.3. 从 RPM 安装时配置 Apache HTTP 服务器安装

从 RPM 软件包安装 Apache HTTP 服务器时,您可以在运行 Apache HTTP 服务器前选择删除 SSL 支持。Apache HTTP 服务器默认支持 SSL。您可以通过删除 mod_ssl 软件包来选择删除 SSL 支持。

流程

  • 在命令行中以 root 用户身份输入以下命令:

    # yum remove jbcs-httpd24-mod_ssl
    Copy to Clipboard Toggle word wrap

当您从 RPM 软件包安装 JBCS Apache HTTP 服务器时,您可以使用命令行启动 Apache HTTP 服务器。

流程

  • 在命令行中以 root 用户身份启动 Apache HTTP 服务器服务:

    # systemctl start jbcs-httpd24-httpd.service
    Copy to Clipboard Toggle word wrap

当您从 RPM 软件包安装 JBCS Apache HTTP 服务器时,您可以使用命令行停止 Apache HTTP 服务器。

流程

  • 在命令行中,以 root 用户身份停止 Apache HTTP 服务器服务:

    # systemctl stop jbcs-httpd24-httpd.service
    Copy to Clipboard Toggle word wrap

当您从 RPM 软件包安装 JBCS Apache HTTP 服务器时,您可以将 Apache HTTP Server 服务配置为在系统启动时启动。

流程

  • 要使 Apache HTTP 服务器服务在系统启动时启动,请以 root 用户身份输入以下命令:

    # systemctl enable jbcs-httpd24-httpd.service
    Copy to Clipboard Toggle word wrap

3.7. Apache HTTP 服务器的 SELinux 策略

您可以使用 Security-Enhanced Linux (SELinux)策略来定义 Apache HTTP 服务器的访问控制。这些策略是一组决定对产品的访问权限的规则。

3.7.1. SELinux 策略信息

SELinux 安全模型由内核强制执行,并确保应用程序对文件系统位置和端口等资源具有有限的访问权限。SELinux 策略可确保任何已被破坏或配置不良的进程被限制或阻止运行。

Apache HTTP 服务器安装中的 jbcs-httpd24-httpd-selinux 软件包提供 mod_proxy_cluster 策略。下表包含有关所提供的 SELinux 策略的信息。

Expand
表 3.1. RPM 和默认 SELinux 策略
名称端口信息策略信息

mod_proxy_cluster

httpd_port_t 添加两个端口(适用于 TCP666623364) 以允许 httpd 进程使用它们。

安装后脚本配置 /var/cache/mod_proxy_cluster 的上下文映射,使 httpd 进程在这个位置写入。

当您从 RPM 软件包安装 JBCS Apache HTTP 服务器时,jbcs -httpd2.4-httpd-selinux 软件包为 Apache HTTP 服务器提供 SELinux 策略。jbcs-httpd2.4-httpd-selinux 软件包在 jb-coreservices-1-for-rhel-7-server-rpmsjb-coreservices-1-for-rhel-8-x86_64-rpms 内容交付网络(CDN)存储库中提供。

流程

  • 为您要使用的 RHEL 版本安装 jbcs-httpd2.4-httpd-selinux 软件包。

您可以从红帽客户门户网站上的 软件下载 页面,在 Windows Server 上安装 JBCS Apache HTTP Server。

您可以从红帽客户门户网站上的 软件下载页面 下载 Apache HTTP Server 归档文件。您可以从 Software Downloads 页面上的 Releases 选项卡下载基础 JBCS Apache HTTP Server 2.4.51 版本的存档文件。您也可以从 Software Downloads 页面 的安全公告 选项卡中下载最新的服务包版本(若有)。

注意

如果您对预期的安装文件夹有写入权限,您可以使用非管理员用户权限安装归档文件。

流程

  1. 打开浏览器并登录到红帽客户门户网站中的 Software Downloads 页面。
  2. Product 下拉菜单中,选择 Apache HTTP Server
  3. Version 下拉菜单中选择正确的 JBCS 版本。
  4. Releases 选项卡中,点与您的系统平台和架构匹配的 JBCS Apache HTTP Server 归档文件旁边的 Download
  5. 将下载的存档文件提取到您的安装目录中。

    注意

    在 Windows Server 系统上,在 C:\Program Files 目录中安装 Apache HTTP 服务器。

    归档文件的提取会自动为 Apache HTTP 服务器创建顶级 jbcs-httpd24-2.4 文件夹。本文档将 jbcs-httpd24-2.4 文件夹指代为 HTTPD_HOME

  6. 要安装最新的服务包版本(若有),请执行以下步骤:

    1. 在 Software Downloads 页面中,点 安全公告 选项卡。
    2. 安全公告 选项卡中,点与您的系统平台和架构匹配的 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 Patch 归档文件旁边的 Download

      例如,如果您要在 Windows Server 上安装 Apache HTTP Server 2.4.51 的 Service Pack X 版本,请单击 Red Hat JBoss Core Services Apache HTTP Server 2.4.51 for Windows Server x86_64 文件旁边的 Download

      注意

      服务包的发布是累积的。通过下载最新的服务包版本,您也会自动安装任何之前的服务包版本。

4.2. Windows Server 上的 Apache HTTP 服务器配置

当您在 Windows Server 上安装 JBCS Apache HTTP 服务器时,您可以使用命令提示符或使用计算机管理工具来管理 Apache HTTP 服务器。在 Windows Server 上运行 Apache HTTP 服务器前,您必须执行以下一系列配置任务:

在 Windows 服务器上第一次运行 Apache HTTP 服务器前,您必须运行 Apache HTTP 服务器安装后脚本。

流程

  1. 以管理用户身份打开 命令提示。
  2. 前往 HTTPD_HOME\etc 目录。
  3. 使用以下命令:

    call postinstall.httpd.bat
    Copy to Clipboard Toggle word wrap

4.2.2. 安装 Apache HTTP 服务器服务

在 Windows 服务器上第一次运行 Apache HTTP 服务器前,您必须将 Apache HTTP Server 安装为 Windows 服务。

注意

默认情况下,Apache HTTP 服务器配置为使用端口 80。如果安装了 Microsoft Internet Information Services (IIS),则必须禁用或重新配置 MicrosoftIS,以避免端口冲突:

  • 停止 全球 Web 服务,并将 启动类型更改为 Manual
  • 将 IIS 配置为使用不同的端口。

或者,您可以在安装 Apache HTTP 服务器服务前编辑 httpd.conf,并将 Listen 更改为与 Microsoft IIS 端口不冲突的端口。

流程

  1. 以管理用户身份打开 命令提示。
  2. 前往 HTTPD_HOME\bin 目录。
  3. 要安装 Apache HTTP 服务器服务,请输入以下命令:

    httpd -k install
    Copy to Clipboard Toggle word wrap
    注意

    此时会显示防火墙安全对话框,以请求 Apache HTTP 服务器的网络访问。点 Allow to access this service from the network。

4.2.3. 为 Apache HTTP 服务器服务配置文件夹权限

在 Windows 服务器上第一次运行 Apache HTTP 服务器之前,您必须确保用于运行该服务的帐户对 HTTPD_HOME 文件夹及其所有子文件夹完全控制。

流程

  1. 右键单击 HTTPD_HOME 文件夹,再单击 Properties
  2. 选择 Security 选项卡。
  3. Edit 按钮。
  4. 点击 Add 按钮。
  5. 在文本框中,输入 LOCAL SERVICE
  6. 选中 LOCAL SERVICE 帐户的 Full Control 复选框。
  7. 点击 OK
  8. Advanced 按钮。
  9. Advanced Security Settings 对话框中,选择 LOCAL SERVICE,然后点 Edit
  10. 选中此对象选项中 所有现有可继承权限替换所有现有可继承权限 旁边的复选框。
  11. 通过所有打开的文件夹属性窗口单击 OK 以应用设置。

4.2.4. 禁用或启用 SSL 支持

在运行 Apache HTTP 服务器前,您可以选择通过重命名 SSL 配置文件来禁用或启用 SSL 支持。Apache HTTP 服务器默认支持 SSL。

流程

  1. 前往 HTTPD_HOME\conf.d\ 目录。
  2. 要启用或禁用 SSL,请执行以下步骤之一:

    • 如果要禁用 SSL,请将 ssl.conf 重命名为 ssl.conf.disabled
    • 如果要重新启用 SSL,请将 ssl.conf.disabled 重命名为 ssl.conf

4.3. 在 Windows Server 上启动 Apache HTTP 服务器

当您在 Windows Server 上安装 JBCS Apache HTTP 服务器时,您可以使用 Command Prompt 或 Computer Management 工具启动 Apache HTTP Server 服务。

流程

  • 执行以下步骤之一:

    • 以管理员身份打开命令提示符并输入以下命令:

      net start Apache2.4
      Copy to Clipboard Toggle word wrap
    • Start > Administrative Tools > Services,右键点击 httpd 服务,然后点击 Start

4.4. 在 Windows Server 上停止 Apache HTTP 服务器

当您在 Windows Server 上安装 JBCS Apache HTTP 服务器时,您可以使用 Command Prompt 或 Computer Management 工具停止 Apache HTTP Server 服务。

流程

  • 执行以下步骤之一:

    • 以管理员身份打开命令提示符并输入以下命令:

      net stop Apache2.4
      Copy to Clipboard Toggle word wrap
    • Start > Administrative Tools > Services,右键点击 httpd 服务,然后点 Stop

Red Hat Enterprise Linux (RHEL) Application Streams 功能提供和更新 AppStream 存储库中的多个版本的用户空间组件,如应用程序、运行时语言和数据库。在 RHEL 9 中,您可以使用 Application Streams 从 RPM 软件包安装 Apache HTTP 服务器的 RHEL 发行版本。

重要

Red Hat JBoss Core Services (JBCS)没有为 RHEL 9 提供 Apache HTTP 服务器的 RPM 发行版。RHEL AppStream 软件仓库提供的 Apache HTTP Server httpd 软件包是 RHEL 9 系统唯一支持的 Apache HTTP 服务器的 RPM 分发。

注意

RHEL AppStream 软件仓库目前只提供 Apache HTTP 服务器的一个版本。RHEL AppStream 存储库中支持的 httpd 软件包版本为 2.4.53 或更高版本。

安装 Apache HTTP 服务器的 RHEL 发行版不会自动安装 mod_jkmod_proxy_cluster 软件包。有关从 RHEL 9 上的 RPM 软件包安装 mod_jkmod_proxy_cluster 的更多信息,请参阅 Apache HTTP 服务器连接器和负载平衡指南

您可以使用标准 dnf install 命令从 RPM 软件包安装 Apache HTTP 服务器的 RHEL 9 发行版。然后,您可以以 root 用户身份从命令行启动和停止 Apache HTTP 服务器。或者,您可以启用 Apache HTTP 服务器在系统启动时自动启动。

有关安装、启动和停止 Apache HTTP 服务器的 RHEL 发行版的更多信息,请参阅设置 Apache HTTP web 服务器

5.2. Apache HTTP 服务器的 SELinux 策略

您可以使用 Security-Enhanced Linux (SELinux)策略来定义 Apache HTTP 服务器的访问控制。这些策略是一组决定对产品的访问权限的规则。

Apache HTTP 服务器具有 SELinux 类型名称 httpd_t。默认情况下,Apache HTTP 服务器可以访问 /var/www/html 和其他 Web 服务器目录中具有 httpd_sys_content_t SELinux 类型上下文的其他 Web 服务器目录中的文件和目录。

如果要使用非标准配置,您还可以为 Apache HTTP 服务器自定义 SELinux 策略。

第 6 章 为 JBCS Apache HTTP 服务器启用 HTTP/2

Hypertext 传输协议(HTTP)是通过互联网在应用程序(如服务器和浏览器)之间传输数据的标准方法。Apache HTTP 服务器支持使用 HTTP/2 作为使用传输层安全(TLS)的加密连接,该连接在启用后由 h2 关键字指示。

HTTP/2 通过提供以下改进:

  • 标头压缩省略了简化的信息,以减少传输的标头大小。
  • 单一连接上的多个请求和响应使用二进制框架,而不是文本中断响应消息。
注意

Apache HTTP 服务器不支持将 HTTP/2 用于未加密的连接,这些连接使用传输控制协议(TCP),该协议在启用后由 h2c 关键字表示。

HTTP/2 不适用于使用 Multi-Processing Module (MPM) pre-fork (modules/mod_mpm_prefork.so)的 Web 服务器。

6.1. 先决条件

  • 在 Red Hat Enterprise Linux 上具有 root 用户访问权限。
  • 在 Windows 服务器上具有管理访问权限。
  • 已安装 Red Hat JBoss Core Services Apache HTTP Server 2.4.23 或更高版本。
  • 已安装 SSL 模块(modules/mod_ssl.so)。

    如果您需要安装 SSL 模块,请输入以下命令:

    yum install mod_ssl
    Copy to Clipboard Toggle word wrap
  • 已安装 HTTP/2 模块(modules/mod_http2.so)。

    如果您需要安装 HTTP/2 模块,请输入以下命令:

    yum install mod_http2
    Copy to Clipboard Toggle word wrap
注意

Red Hat Enterprise Linux 6 不再被支持,之后从文档中删除了。

6.2. 为 Apache HTTP 服务器启用 HTTP/2

您可以通过更新 HTTP_HOME 目录中的配置文件设置,为 Apache HTTP 服务器启用 HTTP/2。

流程

  1. 在配置中添加 http2_module

    1. 打开 HTTP_HOME/conf.modules.d/00-base.conf 文件。
    2. 输入以下行:

      ...
      LoadModule http2_module modules/mod_http2.so
      Copy to Clipboard Toggle word wrap
  2. 在配置中添加 h2 协议:

    1. 打开 HTTP_HOME/conf/httpd.conf 文件。
    2. 如果要对虚拟主机启用 HTTP/2 支持,请将 h2 协议添加到虚拟主机配置中。

      或者,如果您要为所有服务器连接启用 HTTP/2 支持,请将 h2 协议添加到主服务器配置部分。

      例如:

      <IfModule http2_module>
          Protocols h2 http/1.1
          ProtocolsHonorOrder on
      </IfModule>
      Copy to Clipboard Toggle word wrap
  3. 更新安全套接字层(SSL)配置:

    1. 打开 HTTP_HOME/conf.d/ssl.conf 文件:
    2. 确保将 SSLEngine 指令设置为 enabled。SSL Engine 默认启用。

      SSLEngine on
      Copy to Clipboard Toggle word wrap
    3. 更新 SSLProtocol 指令,以禁用 SSLv2SSLv3 协议。这会强制连接使用传输层安全(TLS)协议。

      SSLProtocol all -SSLv2 -SSLv3
      Copy to Clipboard Toggle word wrap
    4. 更新 SSLCipherSuite 指令,以指定可以将哪些 SSL 密码用于 Apache HTTP 服务器。

      例如:

      SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
      Copy to Clipboard Toggle word wrap
      注意

      有关 SSL 模块和支持的指令的更多信息,请参阅 Apache HTTP 服务器文档版本 2.4 - Modules: Apache Module mod_ssl

  4. 要重启 Red Hat JBoss Core Services Apache HTTP 服务器并应用更改的配置,以 root 用户身份执行以下步骤:

    • 如果要使用 systemd 在 Red Hat Enterprise Linux 上启动 Apache HTTP 服务器,请输入以下命令:

      # systemctl restart jbcs-httpd24-httpd.service
      Copy to Clipboard Toggle word wrap
    • 如果要使用 apachectl 在 Red Hat Enterprise Linux 上启动 Red Hat JBoss Core Services,请输入以下命令:

      # HTTP_HOME/sbin/apachectl restart
      Copy to Clipboard Toggle word wrap
    • 如果要在 Windows Server 上启动 Apache HTTP Server,请输入以下命令:

      # net restart Apache2.4
      Copy to Clipboard Toggle word wrap

您可以查看 Apache HTTP 服务器访问日志或请求日志,以验证是否启用了 HTTP/2。

先决条件

流程

  1. 使用浏览器或使用 curl 命令行工具访问服务器。
  2. 要检查 SSL/TLS 请求日志,请输入以下命令:

    $ grep 'HTTP/2'  HTTP_HOME/logs/ssl_request_log
    Copy to Clipboard Toggle word wrap
  3. 要检查 SSL/TLS 访问日志,请输入以下命令:

    $ grep 'HTTP/2'  HTTP_HOME/logs/ssl_access_log
    Copy to Clipboard Toggle word wrap

验证

  1. 如果启用了 HTTP/2,grep 'HTTP/2' HTTP_HOME/logs/ssl_request_log 命令会生成以下类型:

    [26/Apr/2018:06:44:45 +0000] 172.17.0.1 TLSv1.2 AES128-SHA "HEAD /html-single/index.html HTTP/2" -
    Copy to Clipboard Toggle word wrap
  2. 如果启用了 HTTP/2,grep 'HTTP/2' HTTP_HOME/logs/ssl_access_log 命令会生成以下输出:

    172.17.0.1 - - [26/Apr/2018:06:44:45 +0000] "HEAD /html-single/index.html HTTP/2" 200 -
    Copy to Clipboard Toggle word wrap

6.4. 使用 curl 命令验证启用了 HTTP/2

您可以使用 curl 命令行工具验证是否已启用 HTTP/2。

注意

由 Red Hat Enterprise Linux 7 或更早版本提供的 curl 软件包不支持 HTTP/2。

先决条件

  • 您已 启用了 HTTP/2
  • 您使用的是支持 HTTP2curl 版本。

    要检查您使用支持 HTTP/2 的 curl 版本,请输入以下命令:

    $ curl -V
    Copy to Clipboard Toggle word wrap

    这个命令生成以下输出类型:

    curl 7.55.1 (x86_64-redhat-linux-gnu) ...
    Release-Date: 2017-08-14
    Protocols: dict file ftp ftps gopher http https ...
    Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy Metalink PSL
    Copy to Clipboard Toggle word wrap

流程

  1. 要检查 HTTP/2 协议是否活跃,请输入以下命令:

    $ curl -I https://<JBCS_httpd_server>:<port>/<test.html>
    Copy to Clipboard Toggle word wrap
    注意

    在前面的示例中,将 & lt;JBCS_httpd_server > 替换为服务器的 URI,如 example.com,并将 &lt ;test.html > 替换为您要用于测试配置的任何 HTML 文件。不提供 HTML 测试页面示例。端口号取决于您的配置。

验证

  • 如果 HTTP/2 协议是活跃的,curl 命令会生成以下输出:

    HTTP/2 200
    Copy to Clipboard Toggle word wrap

    否则,如果 HTTP/2 协议不活跃,curl 命令会生成以下输出:

    HTTP/1.1 200
    Copy to Clipboard Toggle word wrap

第 7 章 使用 OCSP 保护连接

在线证书状态协议(OCSP)是一种技术,它允许 Web 浏览器和 Web 服务器通过安全连接进行通信。加密的数据从一个端发送,并被另一端解密,然后再处理。Web 浏览器和 Web 服务器都加密和解密数据。

7.1. 在线证书状态协议

当 Web 浏览器和 Web 服务器通过安全连接通信时,服务器以证书的形式显示一组凭据。然后,浏览器验证证书并发送请求证书状态信息。服务器以当前、过期或未知证书状态进行响应。

证书包含以下类型的信息:

  • 通信的语法
  • 控制启动时间、结束时间和地址信息等信息来访问在线证书状态协议(OCSP)响应器。

Web 服务器使用 OCSP 响应程序来检查证书状态。您可以将 web 服务器配置为使用在证书中列出的 OCSP 响应程序或其他 OCSP 响应程序。OCSP 允许过期证书的宽限期,在更新证书前允许访问服务器的时间有限。

OCSP 克服了较旧的证书撤销列表(CRL)方法的限制。

7.2. 为 SSL 连接配置 Apache HTTP 服务器

您可以通过安装 mod_ssl 软件包并在 ssl.conf 文件中指定配置设置,将 Apache HTTP 服务器配置为支持 SSL 连接。

先决条件

  • 您已生成了 SSL 证书和私钥。
  • 您知道 SSL 证书和私钥文件的位置。
  • 您已获得与 SSL 证书关联的通用名称(CN)。

流程

  1. 要安装 mod_ssl,请输入以下命令:

    # yum install jbcs-httpd24-mod_ssl
    Copy to Clipboard Toggle word wrap
  2. 指定 SSL 配置设置:

    1. 打开 JBCS_HOME/httpd/conf.d/ssl.conf 文件。
    2. 输入 ServerNameSSLCertificateFileSSLCertificateKeyFile 的详细信息。

      例如:

      <VirtualHost _default_:443>
      ServerName www.example.com:443
      SSLCertificateFile /opt/rh/jbcs-httpd24/root/etc/pki/tls/certs/localhost.crt
      SSLCertificateKeyFile /opt/rh/jbcs-httpd24/root/etc/pki/tls/private/localhost.key
      Copy to Clipboard Toggle word wrap
      注意
      • ServerName 必须与与 SSL 证书关联的通用名称(CN)匹配。如果 ServerName 与 CN 不匹配,客户端浏览器会显示域名不匹配错误。
      • SSLCertificateFile 指定 SSL 证书文件的路径。
      • SSLCertificateKeyFile 指定与 SSL 证书关联的私钥文件的路径。
  3. 验证 Listen 指令是否与部署的 httpd 服务的主机名或 IP 地址匹配。
  4. 要重启 Apache HTTP 服务器,请输入以下命令:

    # service jbcs-httpd24-httpd restart
    Copy to Clipboard Toggle word wrap

7.3. 在 Apache HTTP 服务器中使用 OCSP

您可以使用在线证书状态协议(OCSP)来与 Apache HTTP 服务器的安全连接。

流程

  1. 配置证书颁发机构。

    注意

    确保您的 CA 可能会发布 OCSP 证书。CA 必须能够将以下属性附加到证书中:

    [ usr_cert ]
    ...
    authorityInfoAccess=OCSP;URI:http://<HOST>:<PORT>
    ...
    [ v3_OCSP ]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = OCSP Signing
    Copy to Clipboard Toggle word wrap

    在上例中,将 HOSTPORT 替换为您要配置的 OCSP 响应器的详情。

  2. 配置 OCSP 响应器。

7.4. 配置 Apache HTTP 服务器以验证 OCSP 证书

您可以通过在 ssl_conf 文件中定义 OCSP 设置,将 Apache HTTP 服务器配置为验证 OCSP 证书。

流程

  1. 打开 JBCS_HOME/httpd/conf.d/ssl.conf 文件。
  2. 为您的部署指定适当的 OCSP 配置详情。

    例如:

    # Require valid client certificates (mutual auth)
    SSLVerifyClient require
    SSLVerifyDepth  3
    # Enable OCSP
    SSLOCSPEnable on
    SSLOCSPDefaultResponder http://<HOST>:<PORT>
    SSLOCSPOverrideResponder on
    Copy to Clipboard Toggle word wrap
    注意

    前面的示例演示了如何启用客户端证书的 OCSP 验证。在上例中,将 < HOST&gt; 和 <PORT > 替换为默认 OCSP Responder 的 IP 地址和端口。

7.5. 验证 Apache HTTP 服务器的 OCSP 配置

您可以使用 OpenSSL 命令行工具验证 Apache HTTP 服务器的 OCSP 配置。

流程

  • 在命令行中以以下格式输入 openssl 命令:

    # openssl ocsp -issuer cacert.crt -cert client.cert -url http://HOST:PORT -CA ocsp_ca.cert -VAfile ocsp.cert
    Copy to Clipboard Toggle word wrap

    在前面的命令中,请确定您指定了以下详情:

    • 使用 -issuer 选项指定 CA 证书。
    • 使用 -cert 选项指定您要验证的客户端证书。
    • 使用 -url 选项指定 HTTP 服务器验证证书(OCSP)。
    • 使用 -CA 选项指定用于验证 Apache HTTP 服务器服务器证书的 CA 证书。
    • 使用 -VAfile 选项指定 OCSP 响应器证书。





更新于 2024-02-06

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat