![[z/OS]](../images/ngzos.gif)
IBM HTTP Server V5.3 for z/OS:第 4 部分:基本配置
IBM® HTTP Server 中提供了 IBM HTTP Server V5.3 for z/OS® 中的各种功能,但这些功能的实现方式有所不同。请了解这两种 Web 服务器在基本配置方面的主要差别。
该部分以及各个章节与 IBM HTTP Server V5.3 for z/OS 的 z/OS HTTP Serve Planning, Install, and Using 指南(出版物编号为 SC34-4826-09)中的部分和章节相对应。
如何提供文件
IBM HTTP Server 可以提供静态文件或者运行 CGI 脚本文件。这些文件可以位于缺省目录中,也可以位于您指定的目录中。您可以使用各种伪指令来提供这些文件。 使用 Directory 节可以将伪指令分组到一起,并指定这些伪指令应用于特定目录。
缺省情况下,静态文件位于 install_root/htdocs 目录中。您可以在 Alias 伪指令上指定一个替代目录来将该替代目录映射到 Web 地址前缀。然后,您可以创建或复制 Directory 节,并使其指向该替代目录。例如,您可以复制指定 install_root/htdocs 缺省目录的 Directory 伪指令,并将目录从缺省目录更改为 install_root/static 目录。
缺省情况下,CGI 脚本从 install_root/cgi-bin/ 目录运行。您可以在 ScriptAlias 伪指令上指定一个替代目录来将该替代目录映射到 Web 地址前缀。然后,您可以创建或复制 Directory 节,并使其指向该替代目录。例如,您可以复制指定 install_root/cgi-bin/ 缺省目录的 Directory 伪指令,并将目录从缺省目录更改为 install_root/cgi2 目录。
有关这些伪指令的更多信息,请阅读 Apache HTTP Server 文档。
如何提供目录列表
由于 DirectoryIndex 伪指令在缺省 httpd.conf 文件中设置为 index.html,IBM HTTP Server 针对目录请求提供了目录索引文件 index.html。您可以将 DirectoryIndex 伪指令设置为 IBM HTTP Server 要提供的其他文件。您还可以将带有 Indexes 自变量的 Options 伪指令添加到新的或现有 Directory 节,以便 Web 服务器返回该目录的信息。 如果您在 Indexes 自变量前面包含 +,那么 Directory 节将继承在其他 Options 伪指令上设置的自变量。如果未设置 DirectoryIndex 和 Options 伪指令,那么 Web 服务器将返回 403 错误。
有关这些伪指令的更多信息,请阅读 Apache HTTP Server 文档。
如何配置服务器
您只能通过更新 EBCDIC 配置文件来 管理 IBM HTTP Server。
缺省 IBM HTTP Server 配置文件为 install_root/conf/httpd.conf。如果您希望查看或恢复随附的缺省值,那么可以在 install_root/conf/httpd.conf.default 文件中查找这些缺省值。
要备份的文件
- 配置文件,缺省情况下为 install_root/conf/httpd.conf 文件
- 环境变量文件,即 install_root/bin/envvars 文件
- 安全套接字层 (SSL) 文件,例如下列文件:
- 密钥数据库文件,其扩展名为 kdb
- 隐藏文件,其扩展名为 sth
- 请求数据库文件,其扩展名为 rdb
- 证书撤销列表文件,其扩展名为 crl
- 证书文件,其扩展名为 arm
- 可以用于进行访问控制的 install_root/bin/htpasswd 命令之类的命令的输出
- 手动编辑的组列表
- HTTP 请求中提供的任何内容,例如 HTML 文件、图像、Java™ 脚本、级联样式表和 CGI 脚本
加密支持
美国政府以及美国以外的政府严格监管用于加密的产品并禁止出口这些产品,除非这些产品的密钥大小受到严格限制。由于美国政府更新其出口法律,而美国以外的政府更新其进口条例,因此,受支持的密钥长度和密码规范可能会发生更改。
IBM HTTP Server 支持 SSL 密码规范主题中列出的 SSL 密码。
硬件加密
您可以使用硬件加密来提高客户机与服务器之间的 SSL 会话的性能。到目前为止,Web 服务器性能方面的最大收获是 SSL 握手。握手使用非对称密钥和函数。Web 服务器使用 RSA 技术来实现非对称功能。如果您在不使用硬件加密的情况下实现 SSL,那么非对称函数将比对称函数慢很多。因此,对 Web 服务器实现硬件加密时,请确保您正确地设置了非对称主密钥。 请使用集成加密服务工具 (ICSF) 软件,以便您可以利用性能提升。非对称主密钥与 Web 服务器的 RSA 密钥不同。
数据加密标准 (DES) 密码规范和三重 DES 密码规范使用对称密钥来处理数据传输。 硬件中的数据传输可能会更快,也可能不会。硬件或软件中的数据传输是否更快取决于数据流的大小。SSL 应该发送相对较小的数据流(通常为 4K 字节或更小)。较小的数据流在软件中的传输速度更快。中等规模的流可能会在硬件或软件中传输更快。超大型的流在硬件中的传输速度更快。
- Web 服务器使用 RSA 技术来实现 SSL 握手。握手是一种非对称能力,它使用 RSA 公用-专用密钥对。您可以在软件或硬件中生成 RSA 密钥。
- 如果您在软件中生成 RSA 密钥,那么可以使用 RACF® 命令或 gskkyman 实用程序。
- 定义 RACF 命令可以允许用户标识和 Web 服务器标识在 CSFSERV 常规资源类中进行概要分析。CSFSERV 常规资源类控制 ICSF 软件的使用。
有关如何实现硬件加密的信息,请阅读相应的手册。例如,阅读 IBM 支持门户网站上的 z/OS Processor Resource/Systems Management Planning Guide。另外,您还可以阅读 z/OS 因特网资料库中提供的 z/OS Cryptographic Services ICSF Administrator's Guide 和 z/OS Cryptographic Services ICSF System Programmer's Guide。
如何检查是否对 Web 服务器加密使用了硬件加密
- 验证用户标识和 Web 服务器标识是否有权访问 ICSF。
- 检查 ICSF 启动式任务是否处于活动状态。
- 通过 ICSF TSO 面板执行下列一项任务或同时执行这两项任务,以确保 ICSF 正常工作:
- 检查 ICSF 是否定义了 PKA 主密钥。
- 成功生成 PKA 主密钥。
有关设置安全服务器的核对表
要启用传输层安全性 (TLS),请使用 conf/httpd.conf.default 文件中的 SSL 虚拟主机示例。 此示例包含启用 TLS 所需的元素,包括 Listen 伪指令、SSLEnable 伪指令和 mod_ibm_ssl 模块。
如何更改 Web 服务器所使用的加密级别的缺省顺序
您可以使用 SSLCipherSpec 伪指令来控制加密级别的顺序。IBM HTTP Server 始终执行首选顺序。请阅读有关 SSL 伪指令的主题中有关 SSLCipherSpec 伪指令的信息。
如何对服务器资源设置保护
IBM HTTP Server V5.3 for z/OS 的 z/OS HTTP Server Planning, Install, and Using 指南中提供了下列步骤。与每个步骤相关联的信息即为在 IBM HTTP Server 中执行该步骤所需的信息。- 步骤 1. 在服务器上激活保护。
缺省情况下,IBM HTTP Server 会装入限制对资源的访问的通用模块,因此您无需执行任何操作即可完成此步骤。
- 步骤 2. 指定您希望服务器接受哪些请求。
使用配置节可以包括与保护相关的配置伪指令。请阅读 Apache HTTP Server 文档中有关配置节的信息。
对于分层文件系统 (HFS) 中的资源,请使用 <Directory> 和 <DirectoryMatch> 伪指令来包括保护伪指令。对于未在 HFS 中的其他资源(例如插件所提供的那些资源),请使用 <Location> 和 <LocationMatch> 伪指令。
- 步骤 3. 确定要使用哪些保护选项。IBM HTTP Server 提供了许多不同的保护机制,您可以从这些保护机制中进行选择:
- 通过 mod_authz_host 模块实现的基于主机的访问控制。mod_authz_host 模块允许或拒绝各个 IP 地址或子网。
- 各个模块进行互操作以提供用户标识和密码认证。 这些功能包括针对文件数据库和 LDAP 的 HTTP 基本认证;HTTP 摘要认证;以及 SSL 客户机证书认证。
- 各个模块进行互操作以提供授权。这些功能包括组、轻量级目录访问协议 (LDAP) 以及 SSL 客户机证书。
服务器通过首先检查基于主机的访问控制来处理请求。然后,它将检查认证和访问控制。 如果 Satisfy 伪指令设置为 any,那么请求只需满足基于主机的访问控制或授权要求。 Require 授权伪指令的任何匹配项都允许访问。但是,无法根据多个 Require 伪指令的匹配项来授予访问权。警告:您可以使用 <Limit> 和 <LimitExcept> 伪指令将保护方法限制为个别 HTTP 请求方法,但仔细测试此方法。 - 步骤 4. 创建保护设置。
您可以根据用户和组密码文件来检查 IBM HTTP Server 密码。但是,如果您要针对本地系统检查 IBM HTTP Server 密码,请指定 AuthBasicProvider SAF 伪指令。 您可以通过指定 SAFRunAs 伪指令来选择更改用来处理请求的 SAF 用户标识。
如果要根据虚拟主机来请求 SSL 客户机认证,请指定 SSLCLientAuth required 伪指令。使用 SSLClientAuthRequire 伪指令可以指定在服务器允许访问受保护资源之前,必须针对客户机证书验证的属性值或属性值组。
请使用下列示例来作为创建保护设置时的指导:
- 通过使用 Order、allow 和 deny 伪指令可以控制对资源的访问:
Alias /my-app /opt/my-app/htdocs <Directory /opt/my-app/htdocs> # Allow requests that match the allow directives. Then, deny requests that match the deny directives. # Then, deny requests that do not match the allow or deny directives. Order allow,deny # Allow access only to those users from the local host. Allow from 127.0.0.1 </Directory>
- 通过使用 order、allow 和 deny 伪指令可以控制对资源的访问。另外,还可以使用基本认证,以便用户提供用户标识和密码来访问资源。请指定包含用户标识和密码的文件。
<Directory /opt/my-app/htdocs/members-only> Order allow,deny Allow from 127.0.0.1 # Add HTTP basic authentication. AuthType Basic AuthBasicProvider file AuthName "Login with your example.com user ID." # Use the htpasswd utility in the <install_root>/bin/htpasswd file to maintain the passwords. # Store the userid and password file in a directory other than the one that it is protecting. AuthUserFile /opt/my-app/users.passwd Require valid-user </Directory>
- 仅允许用户标识 administrator 访问资源。
<Directory /opt/my-app/htdocs/admin> ... Require user administrator </Directory>
- 仅允许用户组 admins 访问资源。请指定包含该用户组的文件。
<Directory /opt/my-app/htdocs/admin> ... # text file with multiple group-name: member1 member2... lines # Store the group file in a directory other than the one that it is protecting. AuthzGroupFile /auth/groups Require group admins </Directory>
- 允许本地主机按照它作为管理员的方式访问资源。
<Directory /opt/my-app/htdocs/admin> ... Require group admins Satisfy any Order allow,deny Allow from 127.0.0.1 </Directory>
- 通过使用 Order、allow 和 deny 伪指令可以控制对资源的访问:
- 步骤 5. 限制对各个文件的访问。
您可以通过将 <Files> 伪指令或 <FilesMatch> 伪指令嵌套在 <Directory> 伪指令或 <DirectoryMatch> 伪指令内部,来限制用户访问的文件。
有关指定用户名、组名和地址模板的规则
您不能根据用户名和地址组合(例如 bob@192.168.1.1 和 steve@192.168.2.2)来允许访问,而不编写您自己的 Apache 模块来进行授权。
在保护设置中使用组文件
IBM HTTP Server 中的组文件仅仅是组名到用户列表的映射。它不能具有嵌套定义,也不能包含地址指定项。
访问控制表文件
IBM HTTP Server 没有访问控制表文件。您可以使用 .htaccess 文件来限制对资源的访问。但是,在您可以更新 httpd.conf 文件的情况下,请避免使用 .htaccess 文件,因为这会使服务器速度减慢。替代方法是将伪指令包含在 <Directory> 伪指令中,并将所有伪指令放在 httpd.conf 文件中。