Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南

第 9 章 配置安全性

本章介绍了一些核心应用程序服务器的安全性概念,并介绍了如何为 Application Server 配置安全性。本章包含以下主题:

关于 Application Server 安全性

安全性概述

安全性是有关数据保护的功能:在存储和传输数据时如何防止对数据进行未经授权的访问或破坏。Application Server 具有基于 J2EE 标准的动态可扩展安全体系结构。内置了多种安全功能,包括密码学、验证和授权以及公共密钥基本结构。Application Server 是基于 Java 安全模型构建的,该安全模型使用沙箱,应用程序可以在沙箱中安全地运行,而不会给系统或用户带来潜在的危险。本节介绍了以下主题:

了解应用程序和系统安全性

从宽泛意义上讲,应用程序安全性有两种:

除了应用程序安全性以外,还有影响 Application Server 系统中所有应用程序的系统安全性

程序安全性受应用程序开发者的控制,因此本文档不对其进行讨论;声明安全性受应用程序开发者的控制要少一些,本文档中只偶尔涉及到声明安全性。本文档主要针对系统管理员,因此主要讲述了系统安全性。

管理安全性的工具

Application Server 提供了以下用于管理安全性的工具:

Java 2 Platform, Standard Edition (J2SE) 提供了两个用于管理安全性的工具:

有关使用 keytoolpolicytool 和其他 Java 安全性工具的更多信息,请参见 http://java.sun.com/j2se/1.4.2/docs/tooldocs/tools.html#security 上的 Java 2 SDK Tools and Utilities

在 Enterprise Edition 中,还可以使用两个实现网络安全服务 (NSS) 的工具来管理安全性。有关 NSS 的更多信息,请访问 http://www.mozilla.org/projects/security/pki/nss/。管理安全性的工具包括:

有关使用 certutilpk12util 和其他 NSS 安全性工具的更多信息,请参见 http://www.mozilla.org/projects/security/pki/nss/tools 上的 NSS Security Tools

管理密码安全性

在此版本的 Application Server 中,包含特定域的规范的 domain.xml 文件最初以明文形式包含了 Sun Java System Message Queue 代理的密码。domain.xml 文件中包含此密码的元素为 jms-host 元素的 admin-password 属性。由于在安装期间不能更改此密码,因此它不会对安全性产生很大的影响。

不过,您可以使用管理控制台添加用户和资源,并为这些用户和资源指定密码。部分密码将以明文形式写入 domain.xml 文件,例如用于访问数据库的密码。将这些密码以明文形式保存在 domain.xml 文件中可能会破坏安全性。通过执行以下操作步骤,您可以对 domain.xml 中的任何密码进行加密,包括 admin-password 属性或数据库密码。

Procedure加密 domain.xml 中的密码

  1. domain.xml 文件所在的目录(默认情况下,此目录为 domain-dir/config)中,运行以下 asadmin 命令:


    asadmin create-password-alias --user admin alias-name
    

    例如,


    asadmin create-password-alias --user admin jms-password

    将显示输入密码提示(在本例中为 admin)。有关更多信息,请参阅 create-password-aliaslist-password-aliasesdelete-password-alias 命令的手册页。

  2. 删除并替换 domain.xml 中的密码。使用 asadmin set 命令可以完成此操作。用于此目的的 set 命令的示例如下:


    asadmin set --user admin server.jms-service.jms-host.
    default_JMS_host.admin-password=${ALIAS=jms-password}
  3. 重新启动相关域的 Application Server。

保护具有编码密码的文件

某些文件包含需要使用文件系统权限进行保护的编码密码。这些文件包括:

Procedure更改主密码

主密码 (MP) 是全局性的共享密码。它从不用于验证,也从不会在网络上传输。此密码是整体安全性的要塞点;用户可以选择在需要时手动输入此密码,也可以将其隐藏在文件中。它是系统中最敏感的数据。用户可以通过删除此文件强制系统提示输入 MP。更改主密码后,系统会将其重新保存到主密码密钥库中。

  1. 停止域的 Application Server。使用 asadmin change-master-password 命令提示输入旧密码和新密码,然后对所有依赖项重新进行加密。例如,


    asadmin change-master-password>
    Please enter the master password>
    Please enter the new master password>
    Please enter the the new master password again>
  2. 重新启动 Application Server。


    注意 – 注意 –

    此时,不能启动正在运行的服务器实例并且不能重新启动运行服务器实例,除非已更改这些实例所对应的节点代理上的 SMP。如果在更改服务器实例的 SMP 之前重新启动了该服务器实例,它将无法启动。


  3. 一次停止一个节点代理及与其相关的服务器。再次运行 asadmin change-master-password 命令,然后重新启动节点代理及其相关服务器。

  4. 继续对下一个节点代理执行此过程,直到对所有节点代理均已执行此过程。这样就可以完成滚动更改。

Procedure更改管理员密码

管理密码安全性中介绍了如何对管理员密码进行加密。强烈建议您对管理员密码进行加密。如果要在加密管理员密码之前更改管理员密码,请使用 asadmin set 命令。用于此目的的 set 命令的示例如下:


asadmin set --user admin 
server.jms-service.jms-host.default_JMS_host.admin-password=new_pwd

还可以使用管理控制台更改管理员密码,步骤如下。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“区域”节点。

  5. 选择 admin-realm 节点。

  6. 在“编辑区域”页面中,单击“管理用户”按钮。

  7. 选择名为 admin 的用户。

  8. 输入新密码并确认密码。

  9. 单击“保存”以保存新密码,或单击“关闭”以关闭页面而不保存新密码。

指定安全职责

将为以下角色指定安全职责:

应用程序开发者

应用程序开发者负责:

应用程序开发者可以使用 deploytool 等工具来编辑应用程序部署描述符。《The J2EE 1.4 Tutorial》中的 "Security" 一章详细介绍了这些安全性任务,您可以通过以下 URL 查看该教程:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

应用程序部署者

应用程序部署者负责:

应用程序部署者可以使用 deploytool 等工具来编辑应用程序部署描述符。《The J2EE 1.4 Tutorial》中的 "Security" 一章详细介绍了这些安全性任务,您可以通过以下 URL 查看该教程:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

系统管理员

系统管理员负责:

系统管理员使用管理控制台来管理服务器安全性设置,并使用 certutil 来管理证书。本文档主要针对系统管理员。

关于验证和授权

验证和授权是应用程序服务器安全性的核心概念。以下主题讨论了与验证和授权相关的内容:

验证实体

验证是一种实体(用户、应用程序或组件)用来确定另一个实体是否是其声明的实体的方法。实体使用安全凭证对其自身进行验证。凭证可以是一个用户名和密码、一个数字证书或其他凭证。

通常,验证表示用户使用用户名和密码登录到某个应用程序;也可以指 EJB 从服务器请求资源时,提供安全凭证。通常,服务器或应用程序要求客户机进行验证;另外,客户机也可以要求服务器对其自身进行验证。如果验证是双向的,则称为双向验证。

当实体尝试访问受保护的资源时,Application Server 将使用为该资源配置的验证机制来决定是否授予访问权限。例如,用户可以在 Web 浏览器中输入用户名和密码,如果应用程序顺利完成了对那些凭证的检验,则表示该用户已通过验证。在此会话余下的时间内,该用户将始终与这个经过验证的安全身份相关联。

Application Server 支持四种类型的验证,如验证实体所述。应用程序在其部署描述符中指定所使用的验证类型。有关使用 deploytool 来配置应用程序验证方法的更多信息,请参见位于以下 URL 的《The J2EE 1.4 Tutorial》:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

表 9–1 Application Server 验证方法

验证方法 

通信协议 

说明 

用户凭证加密 

基本 

HTTP(SSL 可选) 

使用服务器的内置弹出式登录对话框。 

无,除非使用 SSL。 

基于表单 

HTTP(SSL 可选) 

应用程序提供它自己的自定义登录页面和错误页面。 

无,除非使用 SSL。 

客户机证书 

HTTPS(基于 SSL 的 HTTP) 

服务器使用公共密钥证书来验证客户机。 

SSL 

检验单点登录

单点登录允许一个虚拟服务器实例中的多个应用程序共享用户验证状态。使用单点登录,登录到一个应用程序的用户也会隐式登录到需要相同验证信息的其他应用程序。

单点登录以组为基础。其部署描述符定义了相同的并使用相同验证方法(基本、表单、摘要或证书)的所有 Web 应用程序共享单点登录。

对于为 Application Server 定义的虚拟服务器,默认情况下已启用单点登录。有关禁用单点登录的信息,请参见配置单点登录 (single sign-on, SSO)

对用户进行授权

用户通过验证后,授权级别将决定该用户可以执行哪些操作。用户的授权以其角色为基础。例如,人力资源应用程序可以授权管理者查看所有雇员的个人信息,但只允许雇员查看自己的个人信息。有关角色的更多信息,请参见了解用户、组、角色和区域

指定 JACC 提供者

JACC(Java 容器授权合同)属于 J2EE 1.4 规范,它为可插拔授权提供者定义了接口。这使得管理员可以设置第三方插件模块来执行授权。

默认情况下,Application Server 提供一个符合 JACC 规范的基于文件的简单授权引擎。还可以指定其他第三方 JACC 提供者。

JACC 提供者使用 Java 验证和授权服务 (JAAS) API。JAAS 允许服务验证并强制对用户进行访问控制。JAAS 实现了 Java 技术版本的标准可插拔验证模块 (PAM) 框架。

审计验证和授权决策

Application Server 可以通过审计模块提供对所有验证和授权决策的审计跟踪。Application Server 提供了一个默认的审计模块,还提供了自定义审计模块的功能。有关开发自定义审计模块的信息,请参见 Application Server Developer's Guide

配置消息安全性

消息安全性使服务器可以在消息层执行 Web 服务调用和响应的端对端验证。Application Server 使用 SOAP 层上的消息安全性提供者来实现消息安全性。消息安全性提供者提供了请求和响应消息所需的验证类型等信息。支持的验证类型包括:

该版本附带了两个消息安全性提供者。可以为 SOAP 层的验证配置消息安全性提供者。可以配置的提供者包括 ClientProviderServerProvider

对消息层安全性的支持以(可插入)验证模块的形式集成到 Application Server 及其客户机容器中。默认情况下,Application Server 中的消息层安全性处于禁用状态。

可以为整个 Application Server 或者为特定应用程序或方法配置消息层安全性。第 10 章,配置消息安全性介绍了如何配置 Application Server 级别的消息安全性。Developer' s Guide 的 "Securing Applications" 一章介绍了如何配置应用程序级别的消息安全性。

了解用户、组、角色和区域

Application Server 对以下实体强制执行其验证和授权策略:


注 –

尽管用户和组是为整个 Application Server 指定的,但是每个应用程序都需要定义自己的角色。当封装和部署应用程序时,应用程序会指定用户/组和角色之间的映射,如下图所示。


图 9–1 角色映射

该图显示了如何将用户指定到组中、如何将用户和组指定给角色以及应用程序如何使用组和角色。

用户

用户是已在 Application Server 中定义的单个(或应用程序)身份。用户可以与组关联。Application Server 验证服务可以管理多个领域中的用户。

J2EE 组(或简称组)是按常见特性(例如职务或用户配置文件)分类的用户类别。例如,假定电子商务应用程序的用户属于 customer 组,但是大客户可以属于 preferred 组。将用户分组可以简化对用户量很大时的访问控制。

角色

角色定义用户可以访问哪些应用程序和每个应用程序的哪些部分,并定义用户可以执行的操作。也就是说,角色决定用户的授权级别。

例如,假定在人事应用程序中,所有雇员均可以访问电话号码和电子邮件地址,但只有管理人员才能访问薪水信息。该应用程序至少需要定义两个角色:employeemanager;仅允许 manager 角色中的用户查看薪水信息。

角色与用户组的不同之处在于,角色在应用程序中定义功能,而用户组是以某一方式相关的一组用户。例如,假定在人事应用程序中有 full-timepart-timeon-leave 几个组,但所有这些组中的用户仍是 employee 角色。

角色是在应用程序部署描述符中定义的。相反,组是针对整个服务器和区域而定义的。应用程序开发者或部署者在每个应用程序的部署描述符中将角色映射到一个或多个组。

区域

领域也称为安全策略域安全域,是服务器定义和强制执行通用安全策略的范围。在实际应用中,区域是服务器存储用户和组信息的系统信息库。

Application Server 预先配置了三个领域:file(初始默认领域)、certificateadmin-realm。还可以设置 ldapsolaris 或自定义领域。应用程序可以在其部署描述符中指定要使用的区域。如果应用程序不指定领域,Application Server 将使用其默认领域。

file 领域中,服务器将用户凭证存储在本地名为 keyfile 的文件中。您可以使用管理控制台来管理 file 领域中的用户。有关更多信息,请参见管理 file 区域用户

certificate 领域中,服务器将用户凭证存储在证书数据库中。使用 certificate 领域时,服务器结合使用证书和 HTTPS 协议来验证 Web 客户机。有关证书的更多信息,请参见证书和 SSL 简介

admin-realm 也是一个 FileRealm,它将管理员用户凭证存储在本地名为 admin-keyfile 的文件中。您可以使用管理控制台管理此领域中的用户,方法与管理 file 领域中的用户相同。有关更多信息,请参见管理 file 区域用户

ldap 领域中,服务器将从轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 服务器(例如 Sun Java System Directory Server)中获取用户凭证。LDAP 是一种协议,它使任何人都可以在网络(无论是公共 Internet 还是企业内联网)中查找组织、个人和其他资源(例如文件和设备)。有关管理 ldap 领域中的用户和组的信息,请参阅您的 LDAP 服务器文档。

solaris 领域中,服务器将从 Solaris 操作系统中获取用户凭证。Solaris 9 OS 和更高版本支持此区域。有关管理 solaris 领域中的用户和组的信息,请参阅您的 Solaris 文档。

自定义区域是用户凭证的任何其他系统信息库,例如关系型数据库或第三方组件。有关更多信息,请参见创建自定义区域

证书和 SSL 简介

本节包括以下主题:

关于数字证书

数字证书(或简称证书)是在 Internet 上唯一地标识人员和资源的电子文件。证书使两个实体之间能够进行安全、保密的通信。

证书有很多种类型,例如个人证书(由个人使用)和服务器证书(用于通过安全套接字层 [SSL] 技术在服务器和客户机之间建立安全会话)。有关 SSL 的更多信息,请参见关于安全套接字层

证书是基于公共密钥加密的,公共密钥加密使用数字密钥对(很长的数字)对信息进行加密或编码,从而使信息只能被目标收件人读取。然后,收件人对信息进行解密(解码)即可读取该信息。

一个密钥对包含一个公共密钥和一个专用密钥。拥有者对公共密钥进行分发并使任何人都可以使用该公共密钥。但是拥有者永远不会分发专用密钥;专用密钥始终是保密的。由于密钥与数学相关,因此使用了密钥对中的一个密钥进行加密的数据只能通过密钥对中的另一个密钥进行解密。

证书就好像一本护照:它可以标识持有者并提供其他重要信息。证书由称为证书授权机构 (Certification Authority, CA) 的可信赖第三方发布。CA 类似于护照申领办公室:它将验证证书持有者的身份并对证书进行签名,以使他人无法伪造或篡改证书。CA 对证书进行签名之后,持有者可以提供该证书作为身份证明并建立经过加密的保密通信。

最重要的是,证书会将拥有者的公共密钥绑定到拥有者的标识。与护照将照片绑定到其持有者的个人信息类似,证书将公共密钥绑定到有关其拥有者的信息。

除了公共密钥以外,证书通常还包括以下信息:

数字证书受 X.509 格式的技术规范约束。要检验 certificate 领域中某个用户的身份,验证服务将使用 X.509 证书的通用名称字段作为主体名称来检验 X.509 证书。

关于证书链

Web 浏览器已预先配置了一组浏览器自动信任的 CA 证书。来自其他证书授权机构的所有证书都必须附带证书链,以检验这些证书的有效性。证书链是由一系列 CA 证书发出的证书序列,最终以根 CA 证书结束。

证书最初生成时是一个自签名证书。自签名证书是其签发者(签名者)与主题(其公共密钥由该证书进行验证的实体)相同的证书。如果拥有者向 CA 发送证书签名请求 (CSR),然后输入响应,自签名证书将被证书链替换。链的底部是由 CA 发布的、用于验证主题的公共密钥的证书(回复)。链中的下一个证书是验证 CA 的公共密钥的证书。通常,这是一个自签名证书(即,来自 CA、用于验证其自身的公共密钥的证书)并且是链中的最后一个证书。

在其他情况下,CA 可能会返回一个证书链。在此情况下,链的底部证书是相同的(由 CA 签发的证书,用于验证密钥条目的公共密钥),但是链中的第二个证书是由其他 CA 签发的证书,用于验证您向其发送了 CSR 的 CA 的公共密钥。然后,链中的下一个证书是用于验证第二个 CA 的密钥的证书,依此类推,直至到达自签名的证书。因此,链中的每个证书(第一个证书之后的证书)都需要验证链中前一个证书的签名者的公共密钥。

关于安全套接字层

安全套接字层 (Secure Socket Layer, SSL) 是用来确保 Internet 通信和事务安全的最常见的标准。Web 应用程序使用 HTTPS(基于 SSL 的 HTTP),HTTPS 使用数字证书来确保在服务器和客户机之间进行安全、保密的通信。在 SSL 连接中,客户机和服务器在发送数据之前都要对数据进行加密,然后由收件人对其进行解密。

当 Web 浏览器(客户机)需要与某个安全站点建立连接时,则会发生 SSL 握手

握手之后,即表示客户机已检验了 Web 站点的身份,并且只有该客户机和 Web 服务器拥有会话密钥副本。从现在开始,客户机和服务器便可以使用该会话密钥对彼此间的所有通信进行加密。这样就确保了客户机和服务器之间的通信的安全性。

SSL 标准的最新版本称为 TLS(传输层安全性)。Application Server 支持安全套接字层 (Secure Socket Layer, SSL) 3.0 和传输层安全性 (Transport Layer Security, TLS) 1.0 加密协议。

要使用 SSL,Application Server 必须拥有接受安全连接的每个外部接口或 IP 地址的证书。只有安装了数字证书之后,大多数 Web 服务器的 HTTPS 服务才能够运行。使用使用 keytool 实用程序生成证书中介绍的过程来设置您的 Web 服务器可用于 SSL 的数字证书。

关于加密算法

加密算法用于加密或解密。SSL 和 TLS 协议支持用于服务器和客户机彼此进行验证、传输证书和建立会话密钥的各种加密算法。

某些加密算法比其他加密算法更强大且更安全。客户机和服务器可以支持不同的加密算法套件。从 SSL3 和 TLS 协议中选择加密算法。在安全连接期间,客户机和服务器同意在通信中使用它们均已启用的最强大的加密算法,因此通常需要启用所有加密算法。

使用基于名称的虚拟主机

对安全应用程序使用基于名称的虚拟主机可能会带来问题。这是 SSL 协议本身的设计限制。必须先进行 SSL 握手(客户机浏览器在这时接受服务器证书),然后才能访问 HTTP 请求。这样,在验证之前就无法确定包含虚拟主机名的请求信息,因此也不能将多个证书指定给单个 IP 地址。

如果单个 IP 地址上的所有虚拟主机都需要通过同一证书的验证,则添加多个虚拟主机将不会影响服务器上正常的 SSL 操作。但是请注意,大多数浏览器会将服务器的域名与证书中列出的域名(如果有的话,也主要适用于官方的 CA 签名证书)进行比较。如果域名不匹配,这些浏览器将显示警告。通常在生产环境中,只将基于地址的虚拟主机与 SSL 一起使用。

关于防火墙

防火墙控制两个或多个网络之间的数据流,并管理网络之间的链接。防火墙可以包含硬件和软件元素。本节介绍了一些常用的防火墙体系结构及其配置。此处的信息主要是针对 Application Server 的。有关特定防火墙技术的详细信息,请参阅防火墙供应商提供的文档。

通常,需要对防火墙进行配置,以便客户机访问所需的 TCP/IP 端口。例如,如果 HTTP 侦听器正在端口 8080 上运行,则将防火墙配置为仅允许处理端口 8080 上的 HTTP 请求。同样地,如果为端口 8181 设置了 HTTPS 请求,则必须将防火墙配置为允许处理端口 8181 上的 HTTPS 请求。

如果需要通过 Internet 对 EJB 模块进行直接的 RMI-IIOP 访问,RMI-IIOP 全称为 Remote Method Invocations over Internet Inter-ORB Protocol(通过基于 Internet 的 ORB 间协议的远程方法调用),则还需要打开 RMI-IIOP 侦听器端口,但强烈建议您不要这样做,因为这样可能会破坏安全性。

在双防火墙体系结构中,您必须将外部防火墙配置为允许处理 HTTP 和 HTTPS 事务。您必须将内部防火墙配置为允许 HTTP 服务器插件与防火墙后面的 Application Server 进行通信。

使用管理控制台管理安全性

管理控制台提供了对安全性的以下方面进行管理的方法:

服务器安全性设置

在“安全性设置”页面中,设置整个服务器的属性,包括指定默认区域、匿名角色和默认的主体用户名和密码。有关更多信息,请参见配置安全性设置

区域和 file 区域用户

了解用户、组、角色和区域中介绍了领域的概念。

有关这些任务的详细信息,请参见有关领域的管理控制台任务

JACC 提供者

指定 JACC 提供者中介绍了 JACC 提供者。使用管理控制台可以执行以下任务:

有关这些任务的详细信息,请参见有关 JACC 提供者的管理控制台任务

审计模块

审计验证和授权决策中介绍了审计模块。审计是记录重要事件(例如错误或安全漏洞)以便随后进行检查的方法。所有验证事件都被记录到 Application Server 日志中。完整的访问日志提供了 Application Server 访问事件的顺序线索。

使用管理控制台可以执行以下任务:

有关这些任务的详细信息,请参见有关审计模块的管理控制台任务

消息安全性

配置消息安全性中介绍了消息安全性的概念。使用管理控制台可以执行以下任务:

有关这些任务的详细信息,请参见第 10 章,配置消息安全性

HTTP 和 IIOP 侦听器安全性

HTTP 服务中的每个虚拟服务器都通过一个或多个 HTTP 侦听器提供网络连接。有关 HTTP 服务和 HTTP 侦听器的一般信息,请参见什么是 HTTP 服务?

Application Server 支持 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)对象,这类对象使用基于 Internet 对象请求代理间协议 (Internet Inter-Orb Protocol, IIOP) 在网络上进行通信。IIOP 侦听器接受来自 EJB 组件的远程客户机和其他基于 CORBA 的客户机的外来连接。有关 IIOP 侦听器的一般信息,请参见IIOP 侦听器

使用管理控制台可以执行以下任务:

有关这些任务的详细信息,请参见有关侦听器和 JMX 连接器的管理控制台任务

管理服务安全性

管理服务确定服务器实例是一个常规实例、一个域管理服务器 (DAS) 还是一个组合。使用管理服务配置 JSR-160 兼容的远程 JMX 连接器,该连接器为远程服务器实例处理域管理服务器与节点代理(管理主机上的服务器实例)之间的通信。

使用管理控制台可以执行以下任务:

有关这些任务的详细信息,请参见配置管理服务的 JMX 连接器的安全性

安全映射

关于安全映射中介绍了连接器连接池的安全映射的概念。使用管理控制台可以执行以下任务:

有关这些任务的详细信息,请参见有关连接器连接池的管理控制台任务

有关安全性的管理控制台任务

Procedure配置安全性设置

管理控制台中的“安全性”页面允许您设置各种系统范围内的安全性设置。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 选择“安全性”节点。

    将显示“安全性”页面。

  4. 根据需要修改值。

    下表说明了常规安全性选项。

    设置 

    说明 

    审计日志记录 

    选择以启用审计日志记录。如果启用此设置,服务器将装入并运行在“审计模块”设置中指定的所有审计模块。如果禁用此设置,服务器将不访问审计模块。默认情况下,此设置处于禁用状态。 

    默认区域 

    服务器用来进行验证的活动(默认)区域。除非应用程序在其部署描述符中指定了其他区域,否则它们将使用该默认区域。列表中将显示所有已配置的区域。初始默认领域为 file 领域。

    匿名角色 

    默认或匿名角色的名称。匿名角色将被指定给所有用户。应用程序可以在其部署描述符中使用该角色向任何人授予权限。 

    默认主体 

    指定默认用户名。如果未提供任何主体,服务器将使用该默认主体。如果在此字段中输入了一个值,则请在“默认主体密码”字段中输入一个相应的值。 

    正常服务器操作不需要此属性。 

    默认主体密码 

    在“默认主体”字段中指定的默认主体的密码。 

    正常服务器操作不需要此属性。 

    JACC 

    已配置的 JACC 提供者的类名。请参见创建 JACC 提供者

    审计模块 

    审计模块提供程序类的列表(以逗号分隔)。此处所列出的模块必须是已配置模块。如果启用“审计日志记录”,则此设置必须列出审计模块。默认情况下,服务器使用名为 default 的审计模块。有关创建新审计模块的信息,请参见创建审计模块

  5. 在“其他属性”部分输入要传递给 Java 虚拟机 (JVM) 的其他属性。

    有效属性取决于在“缺省区域”字段中选定的区域的类型。有效属性将在以下各节中进行讨论:

  6. 选择“保存”以保存更改,或者选择“装入默认值”以恢复默认值。

Procedure授予访问管理工具的权限

只有 asadmin 组中的用户才能访问管理控制台和 asadmin 命令行实用程序。

要授予用户访问这些管理工具的权限,请将用户添加到 admin-realmasadmin 组中。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“区域”节点。

  5. 选择 admin-realm 节点。

  6. 在“编辑区域”页面中,单击“管理用户”按钮。

    初次完成安装之后,安装过程中输入的管理员用户名和密码将列在名为 admin-keyfile 的文件中。默认情况下,此用户属于 asadmin 组,该组可以授予修改 Application Server 的权限。请仅在您要为用户授予 Application Server 的管理员权限时,才将这些用户指定到该组。

    如果您将用户添加到 admin-realm 领域中,但将该用户指定到 asadmin 组之外的组中,则用户信息仍将写入名为 admin-keyfile 的文件,但用户没有访问管理工具或 file 领域中的应用程序的权限。

  7. 单击“新建”将新用户添加到 admin-realm 领域中。

  8. 在“用户 ID”、“密码”和“组列表”字段中输入正确信息。

    要授予用户修改 Application Server 的权限,请将 asadmin 组包含在“组列表”中。

  9. 单击“确定”将此用户添加到 admin-realm 领域中,或单击“取消”退出而不保存更改。

有关领域的管理控制台任务

Procedure创建领域

Application Server 预先配置了三个领域:filecertificateadmin-realm。还可以创建 ldapsolaris 和自定义领域。通常,服务器上每种类型的领域都会有一个,但在 Application Server 上有两个 file 领域:fileadmin-realm。这两个区域类型相同但用于两种不同的目的。您的系统也可以为每个虚拟服务器配备不同的证书数据库。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 选择“区域”节点。

  5. 在“区域”页面中,单击“新建”。

    将显示“创建区域”页面。

  6. 在“名称”字段中为区域输入名称。

  7. 指定要创建的区域的类名。

    下表显示了有效选项。

    区域名 

    类名 

    file

    com.sun.enterprise.security.auth.realm.file.FileRealm

    certificate

    com.sun.enterprise.security.auth.realm.certificate.CertificateRealm

    ldap

    com.sun.enterprise.security.auth.realm.ldap.LDAPRealm

    solaris

    com.sun.enterprise.security.auth.realm.solaris.SolarisRealm

    custom

    登录区域类的名称 

  8. 添加区域必需的属性和任何需要的可选属性。

    1. 单击“添加属性”。

    2. 在“名称”字段中,输入属性的名称。

    3. 在“值”字段中输入属性的值。

  9. 单击“确定”。

等效的 asadmin 命令

create-auth-realm

Procedure编辑领域

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“区域”节点。

  5. 选择一个现有区域的名称。

    将显示“编辑区域”页面。

  6. 根据需要编辑现有属性及其值。

  7. 要添加其他属性,请单击“添加属性”按钮。

    该页面将显示一个新行。输入一个有效的属性名和属性值。

  8. 单击“保存”以保存更改。

Procedure删除领域

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 选择“区域”节点。

  5. 单击要删除的区域旁边的框。

  6. 单击“删除”。

等效的 asadmin 命令

delete-auth-realm

Procedure设置默认领域

默认领域是当应用程序的部署描述符未指定领域时 Application Server 用于验证和授权的领域。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 选择“安全性”节点。

    将显示“安全性”页面。

  4. 在“默认区域”字段中,从下拉式列表中选择所需的区域。

  5. 单击“保存”以保存更改,或单击“装入默认值”以删除更改并恢复 Application Server 的默认值。

  6. 如果控制台中显示“需要重新启动”,请重新启动服务器。

特定领域的附加信息

本节包括以下主题:

创建 ldap 区域

ldap 领域使用来自 LDAP 服务器的信息执行验证。用户信息包括用户名、密码和用户所属的组。要使用 LDAP 区域,必须已在 LDAP 目录中定义了用户和组。

要创建 LDAP 领域,请按照创建领域中的步骤添加新领域,然后添加下表中的属性。

表 9–2 ldap 领域的必需属性

属性名称 

说明 

值 

目录 

目录服务器的 LDAP URL。 

LDAP URL 的格式为:ldap://主机名:端口,例如 ldap://myldap.foo.com:389

base-dn 

用户数据位置的基本标识名 (Distinguished Name, DN),由于将执行树范围的搜索,因此该用户数据的位置可以是高于用户数据的任何级别。搜索树越小,性能越好。 

搜索的域,例如:dc=siliconvalley, dc=BayArea, dc=sun, dc=com

jaas-context 

要用于此区域的登录模块类型。 

必须为 ldapRealm

下表显示了 ldap 领域的可选属性。

表 9–3 ldap 领域的可选属性

属性名称 

说明 

默认值 

search-filter 

用于查找用户的搜索过滤器。 

uid=%s%s 扩展为主题名称)。

group-base-dn 

组数据位置的基本 DN。 

base-dn 相同,但如果需要也可以对其进行调整。

group-search-filter 

用于查找用户的组成员关系的搜索过滤器。 

uniquemember=%d%d 扩展为用户元素 DN)。

group-target 

包含组名称条目的 LDAP 属性名。 

CN 

search-bind-dn 

用于向目录验证以执行搜索-过滤器查找的可选 DN。对目录的要求只是不允许进行匿名搜索。 

 

search-bind-password 

search-bind-dn 中给定的 DN 的 LDAP 密码。

 

示例

例如,假定在 LDAP 目录中定义了一个 LDAP 用户 Joe Java,如下所示:

uid=jjava,ou=People,dc=acme,dc=com
uid=jjava
givenName=joe
objectClass=top
objectClass=person
objectClass=organizationalPerson
objectClass=inetorgperson
sn=java
cn=Joe Java

创建或编辑 ldap 领域时,您可以使用示例代码输入下表中所示的值。

表 9–4 ldap 领域示例值

属性名称 

属性值 

directory

服务器的 LDAP URL,例如:ldap://ldap.acme.com:389

base-dn

ou=People,dc=acme,dc=com

可以向更高层次进行搜索(例如 dc=acmedc=com),但搜索将遍历树的更大部分,会导致性能降低。

jaas-context

ldapRealm

创建 solaris 区域

solaris 领域从基础 Solaris 用户数据库(由系统配置确定)获取用户和组信息。solaris 领域调用基础 PAM 基础结构以进行验证。如果已配置的 PAM 模块需要超级用户权限,则域必须以超级用户身份运行才能使用该区域。有关详细信息,请参见安全服务的 Solaris 文档。

solaris 领域有一个必需的属性 jaas-context,该属性指定要使用的登录模块的类型。属性值必须为 solarisRealm


注 –

只有 Solaris 9 或更高版本才支持 solaris 领域。


创建自定义区域

除了四个内置区域以外,您还可以创建以其他方式存储用户数据(例如存储在关系型数据库中)的自定义区域。自定义区域的开发不在本文档的讨论范围之内。有关更多信息,请参见 Application Server Developer's Guide 中的 "Securing Applications" 一章。

作为管理员,您需要了解的主要事项是:自定义领域是由源自 Java 验证和授权服务 (Java Authentication and Authorization Service, JAAS) 软件包的类(称为 LoginModule)实现的。

Procedure创建自定义领域

  1. 按照创建领域中介绍的过程,输入自定义领域的名称和 LoginModule 类的名称。

    自定义领域可以使用任何唯一名称,例如 myCustomRealm

  2. 添加下表所示的自定义领域的属性。

    属性名称 

    属性值 

    jaas-context 

    LoginModule 类名,例如 simpleCustomRealm

    auth-type 

    领域的说明,例如“简单示例自定义领域”。 

  3. 单击“确定”。

  4. 编辑域的登录配置文件 domain-dir/config/login.conf,并在文件末尾添加 JAAS LoginModule 的全限定类名,如下所示:


    realmName {
        fully-qualified-LoginModule-classname required;
    };

    例如,


    myCustomRealm {
        com.foo.bar.security.customrealm.simpleCustomLoginModule required;
    };
  5. LoginModule 类和所有相关类复制到 domain-dir/lib/classes 目录中。

  6. 如果控制台中显示“需要重新启动”,请重新启动服务器。

  7. 确保已正确装入区域。

    检查 domain-dir/logs/server.log 以确保服务器已装入该领域。服务器应调用领域的 init() 方法。

编辑 certificate 区域

certificate 领域支持 SSL 验证。此领域在 Application Server 的安全上下文中设置用户身份,并使用从信任库和密钥库文件中以加密方式检验的客户机证书中获得的用户数据来填充该用户身份(请参见 关于证书文件)。使用 certutil 将用户添加到这些文件中。

使用 certificate 领域,J2EE 容器可以根据每个用户证书中的标识名 (Distinguished Name, DN) 来执行授权处理。DN 是证书对其公共密钥进行标识的实体的名称。此名称使用 X.500 标准,因此它在 Internet 中应该是唯一的。有关密钥库和信任库的更多信息,请参阅使用网络安全服务 (NSS) 工具中的 certutil 文档。

下表列出了 certificate 领域的可选属性。

表 9–5 certificate 领域的可选属性

属性 

说明 

assign-groups 

以逗号分隔的组名列表。提供有效证书的所有客户机均被指定给这些组。例如,employee,manager,它们是用户组的名称。

jaas-context 

要用于此区域的登录模块类型。对于 certificate 领域,该值必须为 certificateRealm

编辑 file 和 admin-realm 区域

服务器在 file 领域的名为 keyfile 的文件和 admin-realm 领域的名为 admin-keyfile 的文件中维护所有用户、组和密码信息。对于这两种领域,file 属性均指定了 keyfile 的位置。下表显示了 file 领域的必需属性。

表 9–6 file 区域的必需属性

属性名称 

说明 

默认值 

file 

密钥文件的完整路径和名称。 

domain-dir/config/keyfile

jaas-context 

要用于此区域的登录模块类型。 

fileRealm 是唯一的有效值

keyfile 最初为空,因此在使用 file 领域之前,必须先添加用户。有关说明,请参见管理 file 区域用户

admin-keyfile 最初包含管理员用户名、加密格式的管理员密码和该用户所属的组(默认情况下为 asadmin)。有关将用户添加到 admin-realm 的更多信息,请参见授予访问管理工具的权限


注 –

admin-realmasadmin 组中的用户已被授权,可以使用管理控制台和 asadmin 工具。只能将具有服务器管理权限的用户添加到该组中。


使用网络安全服务 (NSS) 管理用户

仅在 Enterprise Edition 中,可以使用管理控制台来管理用户(如管理 file 区域用户所述),也可以使用 NSS 工具来管理用户。网络安全服务 (NSS) 是为支持启用安全性的客户机和服务器应用程序的跨平台开发而设计的一组库。使用 NSS 构建的应用程序可以支持 SSL v2 和 v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 证书和其他安全性标准。有关详细信息,请链接到以下 URL:

管理 file 区域用户

使用管理控制台来管理 file 领域用户。file 领域中的用户和组列在 keyfile 文件中,该文件的位置由 file 属性指定。


注 –

还可以使用以下步骤将用户添加到任何 file 领域(包括 admin-realm)中。只需将本节中引用的 file 领域替换为目标领域的名称即可完成操作。


file 领域中的用户可以属于 J2EE 组,它是按照常见属性分类的一个用户类别。例如,假定电子商务应用程序的用户属于 CUSTOMER 组,但是大客户可以属于 PREFERRED 组。将用户分组可以简化对用户量很大时的访问控制。

初次安装 Application Server 之后,唯一的用户是在安装过程中输入的管理员用户。默认情况下,此用户属于 admin-realm 领域中的 asadmin 组,该组可以授予修改 Application Server 的权限。指定给该组的任何用户都将具有管理员权限,也就是说,这些用户具有访问 asadmin 工具和管理控制台的权限。

要管理 file 领域用户,请执行以下任务:

Procedure访问“文件用户”页面

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“区域”节点。

  5. 选择 "file" 节点。

  6. 在“编辑区域”页面中,单击“管理用户”按钮。

    将显示“文件用户”页面。在此页面中执行以下任务:

Procedure添加用户

  1. 单击“新建”将新用户添加到 file 领域中。

  2. 在“文件用户”页面中输入以下信息:

    • 用户 ID(必填)—用户名。

    • 密码(必填)—用户密码。

    • 确认密码(必填)—再次输入用户密码进行确认。

    • 组列表(可选)—用户所属的组列表(以逗号分隔)。无需在其他位置定义这些组。

  3. 单击“确定”将此用户添加到 file 领域的用户列表中。单击“取消”退出而不保存更改。

等效的 asadmin 命令

create-file-user

Procedure编辑用户信息

  1. 在“用户 ID”列中,单击要修改的用户名。

    将显示“编辑文件区域用户”页面。

  2. 在“密码”和“确认密码”字段中,输入新密码来更改用户密码。

  3. 在“组列表”字段中添加或删除组来更改用户所属的组。

    用逗号将组名分隔开。不需要先定义组。

  4. 单击“保存”将此用户保存到 file 领域的用户列表中。

    单击“关闭”退出而不保存更改。

Procedure删除用户

  1. 选中要删除的用户名左侧的复选框。

  2. 单击“删除”。

  3. 单击“关闭”返回到“编辑区域”页面。

等效的 asadmin 命令

delete-file-user

配置双向验证

在双向验证中,服务器端和客户端验证都会被启用。要测试双向验证,必须存在一个包含有效证书的客户机。有关相互验证的信息,请参见《The J2EE 1.4 Tutorial》中的 "Security" 一章,网址为 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

在应用程序中启用双向 SSL 验证

要启用对特定应用程序的相互验证,请使用 deploytool 将验证方法设置为 Client-Certificate。有关使用 deploytool 的更多信息,请参阅《The J2EE 1.4 Tutorial》的 "Security" 一章,网址为 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

Procedure启用对所有应用程序的相互验证

Application Server 使用 certificate 领域进行 HTTPS 验证。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“区域”节点。

  5. 选择 "certificate" 领域。

  6. 单击“添加属性”按钮。

    1. 在“名称”字段中,输入 clientAuth

    2. 在“值”字段中,输入 true

  7. 单击“保存”。

  8. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

    重新启动服务器之后,需要对使用 certificate 领域的所有应用程序进行客户机验证。

有关 JACC 提供者的管理控制台任务

Procedure创建 JACC 提供者

JACC(Java 容器授权合同)属于 J2EE 1.4 规范,它为可插拔授权提供者定义了接口。这使得管理员可以设置第三方插件模块来执行授权。默认情况下,Application Server 提供了一个简单的、符合 JACC 规范的、基于文件的授权引擎。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 选择“JACC 提供者”节点。

  5. 在“JACC 提供者”页面中,单击“新建”。

  6. 在“创建 JACC 提供者”页面中,输入以下信息:

    • 名称—用于标识此提供者的名称。

    • 策略配置—实现策略配置工厂的类的名称。默认提供者使用 com.sun.enterprise.security.provider.PolicyConfigurationFactoryImpl

    • 策略提供者—实现策略工厂的类的名称。默认提供者使用 com.sun.enterprise.security.provider.PolicyWrapper

  7. 单击“添加属性”按钮向提供者添加属性。有效属性包括:

    • repository—包含策略文件的目录。对于默认提供者,此值为 ${com.sun.aas.instanceRoot}/generated/policy

  8. 单击“确定”保存此配置,或单击“取消”退出而不保存更改。

Procedure编辑 JACC 提供者

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“JACC 提供者”节点。

  5. 选择要编辑的 JACC 提供者的节点。

  6. 在“编辑 JACC 提供者”页面中,根据需要修改提供者信息:

    • 策略配置—实现策略配置工厂的类的名称。

    • 策略提供者—实现策略工厂的类的名称。

  7. 要添加属性,请单击“添加”按钮。输入属性的名称和值。有效条目包括:

    • repository—包含策略文件的目录。对于默认提供者,此值为 ${com.sun.aas.instanceRoot}/generated/policy

  8. 要删除现有属性,请单击属性左侧的复选框,然后单击“删除属性”。

  9. 单击“保存”以保存更改,或单击浏览器的“后退”按钮以取消而不保存更改。

Procedure删除 JACC 提供者

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 选择“JACC 提供者”节点。

  5. 单击要删除的 JACC 提供者左侧的复选框。

  6. 单击“删除”。

Procedure设置活动的 JACC 提供者

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 选择“安全性”节点。

    将显示“安全性”页面。

  4. 在 "JACC" 字段中,输入服务器要使用的 JACC 提供者的名称。

    如果不知道哪些 JACC 提供者可用,请展开树中的“JACC 提供者”组件来查看所有已配置的 JACC 提供者。

  5. 选择“保存”以保存更改,或者选择“装入默认值”以返回默认值。

  6. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

有关审计模块的管理控制台任务

Procedure创建审计模块

Application Server 提供了一个简单的默认审计模块;有关更多信息,请参见使用默认审计模块

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 选择“审计模块”节点。

  5. 在“审计模块”页面中,单击“新建”。

  6. 在“创建审计模块”页面中,输入以下信息:

    • 名称—用于标识此审计模块的名称。

    • 类名—实现此模块的类的全限定名称。默认审计模块的类名为 com.sun.enterprise.security.Audit

  7. 要将 JVM 属性添加到此模块中,请单击“添加属性”。指定每个属性的名称和值。有效属性包括:

    • auditOn—指定是否启用此实现类。有效值为 truefalse

  8. 单击“确定”以保存条目,或单击“取消”以退出而不保存更改。

Procedure编辑审计模块

默认情况下,未打开审计模块。有关如何激活审计模块的更多信息,请参见启用或禁用审计日志记录

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“审计模块”节点。

  5. 选择要编辑的审计模块的节点。

  6. 在“编辑审计模块”页面中,根据需要修改类名。

  7. 选择“添加”按钮并输入属性的名称和值来输入模块的所有其他属性。有效属性包括:

    • auditOn—指定是否使用此审计模块。有效值为 truefalse

  8. 通过选择要修改的名称或值并在文本字段中直接输入更改来修改任何现有属性。

  9. 通过选中属性左侧的复选框并单击“删除属性”来删除属性。

  10. 单击“保存”以保存更改,或单击浏览器上的“后退”按钮以取消而不保存更改。

Procedure删除审计模块

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 选择“审计模块”节点。

  5. 单击要删除的审计模块左侧的复选框。

  6. 单击“删除”。

Procedure启用或禁用审计日志记录

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 选择“安全性”节点。

    将显示“安全性”页面。

  4. 要启用日志记录,请选中“审计日志记录”复选框。要禁用日志记录,请取消选中该复选框。

    选择此选项可以装入审计模块并确保这些模块在审计时被 Application Server 的审计库调用。

  5. 如果要启用审计日志记录,请指定一个默认审计模块,如设置活动的审计模块中所述。

  6. 选择“保存”以保存更改。

  7. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

Procedure设置活动的审计模块

开始之前

要指定服务器使用的审计模块,请首先按照启用或禁用审计日志记录所述启用审计日志记录。

  1. 在“审计模块”字段中,输入服务器要使用的审计模块的名称。

    预配置的审计模块称为 default。确保已按照使用默认审计模块所述将此审计模块的 auditOn 设置为 true。

  2. 选择“保存”以保存更改,或选择“装入默认值”以取消更改。

  3. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

Procedure使用默认审计模块

default 审计模块将验证和授权请求记录到服务器日志文件中。有关更改日志文件位置的信息,请参见配置常规日志记录设置

验证日志条目包括以下信息:

无论是否启用审计日志记录,Application Server 都将记录所有被拒绝的验证事件。

授权日志条目包括以下信息:

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“审计模块”节点。

  5. 单击 "default" 节点。

  6. auditOn 属性的值设置为 true

  7. 选择“保存”以保存更改。

  8. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

有关侦听器和 JMX 连接器的管理控制台任务

Procedure配置 HTTP 侦听器的安全性

HTTP 服务中的每个虚拟服务器都通过一个或多个 HTTP 侦听器提供网络连接。使用管理控制台可以创建新的 HTTP 侦听器和编辑现有 HTTP 侦听器的安全性设置。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“HTTP 服务”节点。

  4. 选择“HTTP 侦听器”节点。

  5. 选择一个 HTTP 侦听器来编辑现有侦听器,或单击“新建”并按照创建 HTTP 侦听器中的步骤创建一个新的侦听器。

  6. 按照设置侦听器安全性属性中的步骤设置安全性属性。

  7. 单击“保存”以保存更改,或单击浏览器的“后退”按钮以取消而不保存更改。

等效的 asadmin 命令

create-http-listener

Procedure配置 IIOP 侦听器的安全性

Application Server 支持 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)对象,这类对象使用基于 Internet 对象请求代理间协议 (Internet Inter-Orb Protocol, IIOP) 在网络上进行通信。IIOP 侦听器接受来自 EJB 组件的远程客户机和其他基于 CORBA 的客户机的外来连接。使用管理控制台可以创建新的 IIOP 侦听器和编辑现有 IIOP 侦听器的设置。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开 ORB 节点。

  4. 选择“IIOP 侦听程序”节点。

  5. 选择一个 IIOP 侦听器来编辑该侦听器,或单击“新建”并按照创建 IIOP 侦听器中的步骤创建一个新的侦听器。

  6. 按照设置侦听器安全性属性中的步骤设置安全性属性。

  7. 单击“保存”以保存更改,或者单击“装入默认值”以恢复属性的默认值。

    如果创建了新的侦听器,则新侦听器现在将列在“IIOP 侦听器”页面的“当前侦听器”表中。

等效的 asadmin 命令

create-iiop-listener

Procedure配置管理服务的 JMX 连接器的安全性

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“管理服务”节点。

  4. 选择要修改的管理服务。

  5. 按照设置侦听器安全性属性中的步骤设置安全性属性。

  6. 单击“保存”以保存更改,或者单击“装入默认值”以恢复属性的默认值。

Procedure设置侦听器安全性属性

此步骤适用于 HTTP 侦听器、IIOP 侦听器和 JMX 连接器安全性属性。

  1. 在“编辑 HTTP 侦听器”、“编辑 IIOP 侦听器”或“编辑 JMX 连接器”页面中,转至标有 "SSL" 的部分。

  2. 选中“侦听器”字段中的“已启用”框来启用该侦听器的安全性。当选中此选项时,您必须选择 SSL3 或 TLS 来指定启用何种类型的安全性,并且必须输入证书昵称。

  3. 如果客户机在使用此侦听器时要向 Application Server 验证自身,请选中“客户机验证”字段中的“已启用”框。

  4. 如果已选中“已启用”框,请在“证书昵称”字段中输入密钥库别名。密钥库别名是标识现有服务器密钥对和证书的单个值。默认密钥库的证书昵称为 s1as

    要查找证书昵称,请使用 certutil 实用程序,如使用网络安全服务 (NSS) 工具所述。

  5. 如果已选中“已启用”框,请选择 SSL3 和/或 TLS。默认情况下,SSL3 和 TLS 均处于启用状态。

  6. 根据需要启用单个加密算法套件。默认情况下,所有支持的加密算法套件均处于启用状态。关于加密算法中介绍了加密算法。

  7. 选择“保存”以保存更改,或选择“装入默认值”以取消更改。

有关虚拟服务器的管理控制台安全性任务

Procedure配置单点登录 (single sign-on, SSO)

单点登录允许多个应用程序共享用户登录信息,而不要求每个应用程序都单独进行用户登录。使用单点登录的应用程序对用户进行一次验证,然后此验证信息将被传播到其他所有涉及的应用程序。

单点登录适用于为同一领域和虚拟服务器配置的 Web 应用程序。


注 –

单点登录使用 HTTP Cookie 来传输令牌,该令牌将每个请求与已保存的用户身份关联起来,因此仅当浏览器客户机支持 Cookie 时才能使用单点登录。


单点登录根据以下规则运行:

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“HTTP 服务”节点。

  4. 展开“虚拟服务器”节点,然后选择要配置为支持单点登录的虚拟服务器。

  5. 单击“添加属性”。

    一个空白的属性条目将被添加到列表末尾。

  6. 在“名称”字段中输入 sso-enable

  7. 在“值”字段中输入 false 禁用 SSO,输入 true 启用 SSO。

    默认情况下,SSO 处于启用状态。

  8. 单击“添加属性”并配置所有适用的 SSO 属性,来添加或更改任何其他单点登录属性。

    下表说明了虚拟服务器的有效 SSO 属性。

    属性名称 

    说明 

    值 

    sso-max-inactive-seconds

    如果未接收到任何客户机活动,在可以清除用户的单点登录记录之前所等待的时间(以秒为单位)。对虚拟服务器中的任何应用程序的访问都可以使单点登录记录保持活动状态。 

    默认值为 300 秒(5 分钟)。值越高,为用户提供的持续性就越长,但服务器上的内存消耗也会越多。 

    sso-reap-interval-seconds

    清除过期的单点登录记录的时间间隔(以秒为单位)。 

    默认值为 60。 

  9. 单击“保存”。

  10. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

有关连接器连接池的管理控制台任务

关于连接器连接池

连接器模块(也称为资源适配器)允许 J2EE 应用程序与企业信息系统 (EIS) 进行交互。连接器资源为应用程序提供了一个 EIS 连接。连接器连接池是一组用于特定 EIS 的可重复使用的连接。

安全映射允许在 J2EE 用户和组与 EIS 用户和组之间创建映射。使用管理控制台可以创建、更新、列出和删除连接器连接池的安全映射。


注 –

在此上下文中,用户被称为主体。企业信息系统 (EIS) 是保存信息的任何系统。它可以是主机、消息传送系统、数据库系统或应用程序。


关于安全映射

使用安全映射可以将应用程序的调用方身份(主体或用户组)映射到容器管理的基于事务的方案中的适当 EIS 主体。当应用程序主体向 EIS 发出请求后,应用程序服务器将先使用为连接器连接池定义的安全映射检查主体来确定已映射的后端 EIS 主体。如果没有完全匹配的主体,应用程序服务器将使用通配字符规范(如果有)来确定已映射的后端 EIS 主体。当应用程序用户需要执行 EIS 操作(需要以 EIS 中的特定身份来执行)时,请使用安全映射。

使用管理控制台中的以下过程来管理安全映射:

Procedure创建安全映射

连接器连接池的安全映射将应用程序用户和组(主体)映射到 EIS 主体。当应用程序用户需要执行 EIS 操作(需要 EIS 中的特定身份)时,请使用安全映射。

  1. 展开“资源”节点。

  2. 展开“连接器”节点。

  3. 选择“连接器连接池”节点。

  4. 通过从当前池列表中选择连接器连接池的名称来选择一个连接器连接池,或通过从当前池列表中选择“新建”并按照创建 JDBC 连接池中的说明创建新的连接器连接池。

  5. 选择“安全映射”页面。

  6. 单击“新建”以创建新的安全映射。

  7. 在“创建安全映射”页面中,输入以下属性。

    • 名称—输入要用于引用此特定安全映射的名称。

    • 用户组—要映射到适当的 EIS 主体的应用程序的调用方身份。输入以逗号分隔的应用程序特定的用户组列表,或输入通配符星号 (*) 来表示所有用户或所有用户组。指定“主体”或“用户组”选项,但不能同时指定这两个选项。

    • 主体—要映射到适当的 EIS 主体的应用程序的调用方身份。输入以逗号分隔的应用程序特定的主体列表,或输入通配符星号 (*) 来表示所有主体。指定“主体”或“用户组”选项,但不能同时指定这两个选项。

  8. 在“后端主体”部分中,输入以下属性。

    • 用户名—输入 EIS 用户名。企业信息系统 (EIS) 是保存信息的任何系统。它可以是主机、消息传送系统、数据库系统或应用程序。

    • 密码—输入 EIS 用户的密码。

  9. 单击“确定”以创建安全映射,或单击“取消”退出而不保存更改。

等效的 asadmin 命令

create-connector-security-map

Procedure编辑安全映射

  1. 展开“资源”节点。

  2. 展开“连接器”节点。

  3. 选择“连接器连接池”节点。

  4. 通过从当前池列表中选择连接器连接池的名称来选择一个连接器连接池。

  5. 选择“安全映射”页面。

  6. 在“安全映射”页面中,从当前安全映射列表中选择一个安全映射。

  7. 在“编辑安全映射”页面中,根据需要修改以下属性。

    • 用户组—要映射到适当的 EIS 主体的应用程序的调用方身份。输入以逗号分隔的应用程序特定的用户组列表,或输入通配符星号 (*) 来表示所有用户或所有用户组。指定“主体”或“用户组”选项,但不能同时指定这两个选项。

    • 主体—要映射到适当的 EIS 主体的应用程序的调用方身份。输入以逗号分隔的应用程序特定的主体列表,或输入通配符星号 (*) 来表示所有主体。指定“主体”或“用户组”选项,但不能同时指定这两个选项。

  8. 在“后端主体”部分中,输入以下属性。

    • 用户名—输入 EIS 用户名。企业信息系统 (EIS) 是保存信息的任何系统。它可以是主机、消息传送系统、数据库系统或应用程序。

    • 密码—输入 EIS 用户的密码。

  9. 单击“保存”以保存对安全映射的更改。

有用的 asadmin 命令

list-connector-security-mapsupdate-connector-security-maps

Procedure删除安全映射

  1. 展开“资源”节点。

  2. 展开“连接器”节点。

  3. 选择“连接器连接池”节点。

  4. 通过从当前池列表中选择连接器连接池的名称来选择一个连接器连接池。

  5. 选择“安全映射”页面。

  6. 在“安全映射”页面中,单击要删除的安全映射的名称左侧的复选框。

  7. 单击“删除”。

等效的 asadmin 命令

delete-connector-security-map

使用证书和 SSL

关于证书文件

安装 Application Server 时将生成一个适用于内部测试的 NSS(Network Security Services,网络安全服务)格式的数字证书。默认情况下,Application Server 将其证书信息存储在 domain-dir/config 目录下的证书数据库中:

Procedure更改证书文件的位置

为开发提供的密钥库和信任库文件存储在 domain-dir/config 目录中。

  1. 在管理控制台树中,展开“配置”。

  2. 展开 server-config(管理配置)节点。

  3. 选择“JVM 设置”节点。

  4. 单击“JVM 选项”选项卡。

  5. 在“JVM 选项”页面中,在“值”字段中添加或修改以下值来反映证书文件的新位置:


    -Dcom.sun.appserv.nss.db=${com.sun.aas.instanceRoot}/NSS-database-directory
    

    其中 NSS-database-directory 是 NSS 数据库的位置。

  6. 单击“保存”。

  7. 如果控制台中显示“必须重新启动”,请重新启动 Application Server。

使用 Java 安全套接口扩展 (Java Secure Socket Extension, JSSE) 工具

使用 keytool 可以设置和使用 JSSE(Java Secure Socket Extension,Java 安全套接口扩展)数字证书。在 Platform Edition 中,Application Server 在服务器端使用 JSSE 格式来管理证书和密钥库。在 Platform Edition 和 Enterprise Edition 中,客户端(应用程序客户端或独立客户端)均使用 JSSE 格式。

J2SE SDK 附带了 keytool,因而允许管理员管理公共/专用密钥对和关联证书。还允许用户高速缓存正与其通信的另一方的公共密钥(以证书形式)。

要运行 keytool,必须先配置 shell 环境以使 J2SE /bin 目录位于路径中;或者必须在命令行中提供此工具的完整路径。有关 keytool 的更多信息,请参见 http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html 上的 keytool 文档。

使用 keytool 实用程序

以下示例说明了使用 JSSE 工具处理证书的相关用法:

Procedure使用 keytool 实用程序生成证书

使用 keytool 可以生成、导入和导出证书。默认情况下,keytool 将在其运行所在的目录中创建一个密钥库文件。

  1. 转至要运行证书的目录。

    始终在包含密钥库和信任库文件的目录中生成证书,默认目录为 domain-dir/config。有关更改这些文件位置的信息,请参见更改证书文件的位置

  2. 输入以下 keytool 命令以在密钥库文件 keystore.jks 中生成证书:


    keytool -genkey -alias keyAlias-keyalg RSA
     -keypass changeit
     -storepass changeit
    -keystore keystore.jks

    使用任一唯一的名称作为您的 keyAlias。如果您已更改密钥库或专用密钥密码的默认值,请将以上命令中的 changeit 替换为新密码。

    将显示一个要求您输入姓名、组织和其他信息的提示,keytool 将使用这些信息来生成证书。

  3. 输入以下 keytool 命令以将生成的证书导出到文件 server.cer(或 client.cer,如果您愿意):


    keytool -export -alias keyAlias-storepass changeit
     -file server.cer
     -keystore keystore.jks
  4. 如果需要证书授权机构签名的证书,请参见使用 keytool 实用程序为数字证书签名

  5. 要创建信任库文件 cacerts.jks 并将证书添加到信任库中,请输入以下 keytool 命令:


    keytool -import -v -trustcacerts
    -alias keyAlias
     -file server.cer
    -keystore cacerts.jks
     -keypass changeit

    如果您已更改密钥库或专用密钥密码的默认值,请将以上命令中的 changeit 替换为新密码。

    工具将显示有关证书的信息并提示您是否要信任该证书。

  6. 键入 yes,然后按 Enter 键。

    然后,keytool 将显示与下面类似的信息:


    Certificate was added to keystore
    [Saving cacerts.jks]
  7. 重新启动 Application Server。

Procedure使用 keytool 实用程序为数字证书签名

创建数字证书之后,拥有者必须为其签名以防止伪造。电子商务站点或身份验证对其很重要的那些站点可以从知名的证书授权机构 (CA) 购买证书。如果无需考虑验证,例如当专用安全通信可以满足全部需求时,则可节省获取 CA 证书所花费的时间和费用并使用自签名证书。

  1. 按照 CA Web 站点上的说明进行操作来生成证书密钥对。

  2. 下载生成的证书密钥对。

    将证书保存在包含密钥库和信任库文件的目录中,默认目录为 domain-dir/config。请参见更改证书文件的位置

  3. 在 shell 中,转至包含证书的目录。

  4. 使用 keytool 将证书导入到本地密钥库和本地信任库(如有必要)。


    keytool -import -v -trustcacerts
    -alias keyAlias
     -file server.cer
    -keystore cacerts.jks
     -keypass changeit
    -storepass changeit

    如果密钥库或专用密钥密码不是默认密码,请将以上命令中的 changeit 替换为新密码。

  5. 重新启动 Application Server。

使用 keytool 实用程序删除证书

要删除现有证书,请使用 keytool -delete 命令,例如:

keytool -delete
 -alias keyAlias
 -keystore keystore-name
 -storepass password

有关 -delete 命令的可能选项的完整列表,请参阅 http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html 上的 keytool 文档。

使用网络安全服务 (NSS) 工具

在 Enterprise Edition 中,在服务器端使用网络安全服务 (NSS) 数字证书可以管理存储专用密钥和证书的数据库。对于客户端(应用程序客户端或独立客户端),均使用使用 Java 安全套接口扩展 (Java Secure Socket Extension, JSSE) 工具中介绍的 JSSE 格式。

通过网络安全服务 (NSS) 管理安全性的工具包括:

这些工具位于 install-dir/lib/ 目录中。下面的环境变量用于指出 NSS 安全性工具的位置:

在示例中,证书通用名 (Common Name, CN) 是客户机或服务器的名称。在 SSL 握手时也会使用 CN,以比较证书名称和生成证书名的主机名。如果证书名称与主机名不匹配,在 SSL 握手时会产生警告或异常。在某些示例中,使用证书通用名 CN=localhost 是为了方便起见,这样所有用户都可以使用该证书,而不必用他们自己的真实主机名创建一个新证书。

以下各节中的示例说明使用 NSS 工具处理证书的相关用法:

使用 certutil 实用程序

证书数据库工具 certutil 是一个 NSS 命令行实用程序,可以创建和修改 Netscape Communicator cert8.dbkey3.db 数据库文件。还可以列出、生成、修改或删除 cert8.db 文件中的证书,以及创建或更改密码、生成新的公共和专用密钥对、显示密钥数据库的内容或删除 key3.db 文件中的密钥对。

密钥和证书管理进程通常以在密钥数据库中创建密钥开始,然后在证书数据库中生成和管理证书。位于以下网址的文档说明了使用 NSS(包括 certutil 实用程序的语法)管理证书和密钥数据库:http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html

下表中的每一项都给出了一个使用 NSS 和 JSSE 安全性工具来创建和/或管理证书的示例。

使用 pk12util 实用程序导入和导出证书

pk12util 是一个命令行实用程序,用于以 PKCS12 格式在证书/密钥数据库和文件之间导入和导出密钥和证书。PKCS12 是公共密钥加密标准 (Public-Key Cryptography Standards, PKCS) #12 个人信息交换语法标准。有关 pk12util 实用程序的更多说明,请参见 http://www.mozilla.org/projects/security/pki/nss/tools/pk12util.html

使用 modutil 添加和删除 PKCS11 模块

安全性模块数据库工具 modutil 是一个命令行实用程序,用于管理 secmod.db 文件中或硬件令牌中的 PKCS #11(Cryptographic Token Interface Standard,加密令牌接口标准)模块信息。您可以使用此工具添加和删除 PKCS #11 模块、更改密码、设置默认值、列出模块内容、启用或禁用插槽、启用或禁用 FIPS-140-1 兼容性以及指定加密操作的默认提供者。此工具还可以创建 key3.dbcert7.dbsecmod.db 安全性数据库文件。有关此工具的更多信息,请参见 http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html

更多信息