跳过导航链接 | |
退出打印视图 | |
系统管理指南:网络服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
如何装入 Socket Utility Library for NCA
如何配置 Apache 2.0 Web 服务器以使用 SSL 内核代理
以下各节介绍了启用或禁用服务的各个部分的过程。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
在 /etc/nca/nca.if 文件中键入每个物理接口的名称。有关更多信息,请参见 nca.if(4) 手册页。
# cat /etc/nca/nca.if hme0 hme1
每个接口都必须有一个附带的 hostname.interface-name 文件,并在 /etc/hosts 文件中具有一个表示 hostname.interface-name 内容的项。要在所有接口中都启动 NCA 功能,请在 nca.if 文件中放置一个星号 *。
将 /etc/nca/ncakmod.conf 中的 status 项更改为 enabled。
# cat /etc/nca/ncakmod.conf # # NCA Kernel Module Configuration File # status=enabled httpd_door_path=/var/run/nca_httpd_1.door nca_active=disabled
有关更多信息,请参见 ncakmod.conf(4) 手册页。
将 /etc/nca/ncalogd.conf 中的 status 项更改为 enabled。
# cat /etc/nca/ncalogd.conf # # NCA Logging Configuration File # status=enabled logd_path_name="/var/nca/log" logd_file_size=1000000
可通过更改 logd_path_name 项表示的路径来更改日志文件的位置。日志文件可以是原始设备或文件。有关 NCA 日志文件路径的样例,请参见以下示例。有关配置文件的更多信息,请参见 ncalogd.conf(4) 手册页。
在 /etc/nca/ncaport.conf 文件中添加端口号。此项将使 NCA 在所有已配置的 IP 地址中监视端口 80。
# cat /etc/nca/ncaport.conf # # NCA Kernel Module Port Configuration File # . . ncaport=*/80
使用 eeprom 命令设置系统的 kernelbase。
# eeprom kernelbase=0x90000000 # eeprom kernelbase kernelbase=0x90000000
第二个命令用于验证已设置的参数。
注 - 通过设置 kernelbase,可将用户进程可以使用的虚拟内存量减小至 3 GB 以下。此限制意味着系统与 ABI 不兼容。引导系统时,控制台会显示一条警告消息,指明不兼容。大多数程序实际需要的虚拟地址空间都不到 3 GB。如果某一程序需要 3 GB 以上的虚拟地址空间,则需在未启用 NCA 的系统中运行该程序。
示例 2-1 使用原始设备作为 NCA 日志文件
ncalogd.conf 中的 logd_path_name 字符串可将原始设备定义为存储 NCA 日志文件的位置。使用原始设备的优点在于,访问原始设备的开销很小,因此服务可以运行得更快。
NCA 服务将测试文件中列出的所有原始设备,以确保没有使用任何文件系统。此测试可确保不会意外重写任何活动的文件系统。
为了防止此测试找到文件系统,请运行以下命令。此命令将销毁任何磁盘分区中已配置为文件系统的文件系统部分。在此示例中,/dev/rdsk/c0t0d0s7 是正在使用旧文件系统的原始设备。
# dd if=/dev/zero of=/dev/rdsk/c0t0d0s7 bs=1024 count=1
运行 dd 之后,便可将该原始设备添加到 ncalogd.conf 文件中。
# cat /etc/nca/ncalogd.conf # # NCA Logging Configuration File # status=enabled logd_path_name="/dev/rdsk/c0t0d0s7" logd_file_size=1000000
示例 2-2 将多个文件用于 NCA 日志记录
ncalogd.conf 中的 logd_path_name 字符串可将多个目标定义为存储 NCA 日志文件的位置。当第一个文件已满时,将使用第二个文件。以下示例显示如何选择先写入 /var/nca/log 文件,然后再使用原始分区。
# cat /etc/nca/ncalogd.conf # # NCA Logging Configuration File # status=enabled logd_path_name="/var/nca/log /dev/rdsk/c0t0d0s7" logd_file_size=1000000
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
将 /etc/nca/ncakmod.conf 中的 status 项更改为 disabled。
# cat /etc/nca/ncakmod.conf # NCA Kernel Module Configuration File # status=disabled httpd_door_path=/var/run/nca_httpd_1.door nca_active=disabled
有关更多信息,请参见 ncakmod.conf(4) 手册页。
将 /etc/nca/ncalogd.conf 中的 status 项更改为 disabled。
# cat /etc/nca/ncalogd.conf # # NCA Logging Configuration File # status=disabled logd_path_name="/var/nca/log" logd_file_size=1000000
有关更多信息,请参见 ncalogd.conf(4) 手册页。
在启用 NCA 之后,可根据需要打开或关闭 NCA 日志记录。有关更多信息,请参见如何启用 Web 页的高速缓存。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
要永久性地禁用日志记录,需要将 /etc/nca/ncalogd.conf 中的状态更改为 disabled 并重新引导系统。有关更多信息,请参见 ncalogd.conf(4) 手册页。
仅当您的 Web 服务器不提供对 AF_NCA 套接字的本机支持时,才应遵循此过程。
在 Web 服务器的启动脚本中,添加一个用于预装库的行。该行应与以下行类似:
LD_PRELOAD=/usr/lib/ncad_addr.so /usr/bin/httpd
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
向 /etc/nca/ncaport.conf 中添加一个新端口项。此示例在 IP 地址 192.168.84.71 中添加端口 8888。有关更多信息,请参见 ncaport.conf(4)。
# cat /etc/nca/ncaport.conf # # NCA Kernel Module Port Configuration File # . . ncaport=*/80 ncaport=192.168.84.71/8888
地址需要位于包含 NCA 端口配置的文件中,Web 服务器才能将该地址用于 NCA。如果 Web 服务器正在运行,则定义新地址后必须将其重新启动。
应使用此过程来改善 Apache 2.0 Web 服务器上的 SSL 包进程的性能。
开始之前
以下过程要求已安装并配置 Apache 2.0 Web 服务器。发行版中包括 Apache 2.0 Web 服务器。
要使用 SSL 内核代理,服务器私钥和服务器证书需要位于一个文件中。如果只在 ssl.conf 文件中指定了 SSLCertificateFile 参数,则指定的文件可直接用于内核 SSL。如果还指定了 SSLCertificateKeyFile 参数,则需要合并证书文件和私钥文件。合并证书文件和私钥文件的一种方法是运行以下命令:
# cat cert.pem key.pem >cert-and-key.pem
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。ksslcfg 命令包括在 Network Security(网络安全性)配置文件中。
此命令将停止将服务器配置为使用 SMF 运行的系统中的 Web 服务器。
# svcadm disable svc:/network/http:apache2
如果服务尚未转换,请使用以下命令语法停止该服务:/usr/apache2/bin/apachectl stop
ksslcfg(1M) 手册页中列出了所有选项。必须了解的参数包括:
key-format-与 -f 选项一起定义证书和密钥格式。对于 SSL 内核代理,该值应为 pem 或 pkcs12。
key-and-certificate-file-与 -i 选项一起设置存储服务器密钥和证书的文件位置。
password-file-与 -p 选项一起选择文件的位置,该文件中应包括用于加密私钥的口令。此口令用来允许无人参与的重新引导。对该文件的权限应为 0400。
proxy-port-与 -x 选项一起设置 SSL 代理端口。请选择标准端口 80 之外的其他端口。Web 服务器侦听 SSL 代理端口。
ssl-port-选择要侦听的 SSL 内核代理的端口。通常,将此参数设置为 443。
注 - 不能为 NCA 配置 ssl-port 和 proxy-port 值,因为 SSL 内核代理以独占方式使用这些端口。通常,端口 80 用于 NCA,端口 8443 用于 proxy-port,端口 443 用于 ssl-port。
使用 ksslcfg 命令指定 SSL 代理端口和相关参数。
ksslcfg create -f key-format -i key-and-certificate-file -p password-file -x proxy-port ssl-port
以下命令报告的服务状态应为 "online"。
# svcs svc:/network/ssl/proxy
编辑 /etc/apache2/http.conf 文件并添加一行,以定义 SSL 代理端口。如果使用服务器 IP 地址,Web 服务器将只在该接口上侦听。该行应如下所示:
Listen 0.0.0.0:proxy-port
Web 服务器只应在 SSL 内核代理实例之后启动。以下命令将建立该相关性。
# svccfg -s svc:/network/http:apache2 svc:/network/http:apache2> addpg kssl dependency svc:/network/http:apache2> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443 svc:/network/http:apache2> setprop kssl/grouping = astring: require_all svc:/network/http:apache2> setprop kssl/restart_on = astring: refresh svc:/network/http:apache2> setprop kssl/type = astring: service svc:/network/http:apache2> end
# svcadm enable svc:/network/http:apache2
如果未使用 SMF 启动该服务,请使用以下命令:/usr/apache2/bin/apachectl startssl
示例 2-3 配置 Apache 2.0 Web 服务器以使用 SSL 内核代理
以下命令将使用 pem 密钥格式创建一个实例。
# ksslcfg create -f pem -i cert-and-key.pem -p file -x 8443 443
应使用此过程来改善 Sun Java System Web Server 上的 SSL 包进程的性能。有关此 Web 服务器的信息,请参见《Sun Java System Web Server 6.1 2005Q4 SP4 管理员指南》。
开始之前
以下过程要求已安装并配置 Sun Java System Web Server。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。ksslcfg 命令包括在 Network Security(网络安全性)配置文件中。
使用管理员 Web 界面停止服务器。有关更多信息,请参见《Sun Java System Web Server 6.1 2005Q4 SP4 管理员指南》中的 "Starting and Stopping the Server"。
需要此步骤以确保在创建内核 SSL 服务实例时已禁用 metaslot。
# cryptoadm disable metaslot
ksslcfg(1M) 手册页中列出了所有选项。必须了解的参数包括:
key-format-与 -f 选项一起定义证书和密钥格式。
token-label-与 -T 选项一起指定 PKCS#11 令牌。
certificate-label-与 -C 选项一起选择 PKCS#11 令牌的证书对象中的标签。
password-file-与 -p 选项一起选择文件的位置,该文件中应包括用于使用户登录到 Web 服务器所使用的 PKCS#11 令牌的口令。此口令用来允许无人参与的重新引导。对该文件的权限应为 0400。
proxy-port-与 -x 选项一起设置 SSL 代理端口。请选择标准端口 80 之外的其他端口。Web 服务器侦听 SSL 代理端口。
ssl-port-定义要侦听的 SSL 内核代理的端口。通常,将此值设置为 443。
注 - 不能为 NCA 配置 ssl-port 和 proxy-port 值,因为 SSL 内核代理以独占方式使用这些端口。通常,端口 80 用于 NCA,端口 8443 用于 proxy-port,端口 443 用于 ssl-port。
使用 ksslcfg 命令指定 SSL 代理端口和相关参数。
ksslcfg create -f key-format -T PKCS#11-token -C certificate-label -p password-file -x proxy-port ssl-port
# cryptoadm enable metaslot
以下命令报告的服务状态应为 "online"。
# svcs svc:/network/ssl/proxy
有关更多信息,请参见《Sun Java System Web Server 6.1 2005Q4 SP4 管理员指南》中的 "Adding and Editing Listen Sockets"。
示例 2-4 配置 Sun Java System Web Server 以使用 SSL 内核代理
以下命令将使用 pkcs11 密钥格式创建一个实例。
# ksslcfg create -f pkcs11 -T "Sun Software PKCS#11 softtoken" -C "Server-Cert" -p file -x 8443 443
SSL 内核代理在区域中工作时具有以下限制:
所有内核 SSL 管理都必须从全局区域中执行。全局区域管理员需要访问本地区域证书和密钥文件。使用 ksslcfg 命令在全局区域中配置服务实例后,便可以启动本地区域 Web 服务器。
通过运行 ksslcfg 命令来配置实例时,必须指定特定的主机名或 IP 地址。需要特别指出的是,该实例不能使用 INADDR_ANY。
示例 2-5 在本地区域中配置 Apache Web 服务器以使用 SSL 内核代理
在本地区域中,先停止 Web 服务器。在全局区域中,执行配置服务的所有步骤。要为名为 apache-zone 的本地区域创建实例,请使用以下命令:
# ksslcfg create -f pem -i /zone/apache-zone/root/keypair.pem -p /zone/apache-zone/root/pass \ -x 8443 apache-zone 443
在本地区域中,运行以下命令,以启用服务实例:
# svcadm enable svc:/network/http:apache2