安全性是有关数据保护的功能:在存储和传输数据时如何防止对数据进行未经授权的访问或破坏。Application Server 具有基于 J2EE 标准的动态可扩展安全体系结构,内置了多种安全功能,包括密码学、验证和授权以及公共密钥基本结构。Application Server 是基于 Java 安全模型构建的,该安全模型使用沙盒,应用程序可以在沙盒中安全地运行,而不会给系统或用户带来潜在的危险。本节介绍了以下主题:
从宽泛意义上讲,应用程序安全性有两种:
deploytool
等工具来控制声明安全性。由于可以在完成应用程序开发之后更改部署描述符,因此声明安全性具有更大的灵活性。除了应用程序安全性以外,还有影响 Application Server 系统中所有应用程序的系统安全性。
程序安全性受应用程序开发者的控制,因此本文档不对其进行讨论;声明安全性受应用程序开发者的控制要少一些,本文档中只偶尔涉及到声明安全性。本文档主要针对系统管理员,因此主要讲述了系统安全性。
Application Server 提供了以下用于管理安全性的工具:
asadmin
,一个命令行工具,它可以执行管理控制台能够执行的许多任务。您还可以使用 asadmin
执行某些使用管理控制台无法执行的任务。您可以从命令提示符或在脚本中执行 asadmin
命令,以自动执行重复任务。有关 asadmin
的一般介绍,请参见管理工具。deploytool
,一个图形形式的封装和部署工具,用于编辑应用程序部署描述符,从而控制各个应用程序的安全性。由于 deploytool
主要针对应用程序开发者,因此本文档未对该工具的使用作详细说明。有关使用 deploytool
的说明,请参见此工具的联机帮助以及位于 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html 上的 J2EE 1.4 Tutorial。Java 2 Platform, Standard Edition (J2SE) 提供了两个用于管理安全性的工具:
keytool
,一个命令行实用程序,用于管理数字证书和密钥对。使用 keytool
可以管理 certificate
区域内的用户。 policytool
,一个图形实用程序,用于管理系统范围的 Java 安全策略。作为管理员,您很少会用到 policytool
。
有关使用 keytool
、policytool
和其他 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/。管理安全性的工具包括:
certutil
,一个命令行实用程序,用于管理证书和密钥数据库。pk12util
,一个命令行实用程序,用于以 PKCS12 格式在证书/密钥数据库和文件之间导入和导出密钥及证书。
有关使用 certutil
、pk12util
和其他 NSS 安全性工具的更多信息,请参见位于 http://www.mozilla.org/projects/security/pki/nss/tools 的 NSS Security Tools。
在此版本的 Application Server 中,包含特定域的规范的 domain.xml
文件最初以明文形式包含了 IMQ 代理的密码。domain.xml
文件中包含此密码的元素为 jms-host
元素的 admin-password
属性。由于在安装期间不能更改此密码,因此它不会对安全性产生很大的影响。
不过,您可以使用管理控制台添加用户和资源,并为这些用户和资源指定密码。部分密码将以明文形式写入 domain.xml
文件,例如用于访问数据库的密码。将这些密码以明文形式保存在 domain.xml
文件中可能会破坏安全性。通过执行以下操作步骤,您可以对 domain.xml
中的任何密码进行加密,包括 admin-password
属性或数据库密码:
domain.xml
文件所在的目录(默认情况下,此目录为 install_dir/domains/
domain_dir/config
)中,运行以下 asadmin
命令:
asadmin create-password-alias <
alias-name>
例如,
asadmin create-password-alias jms-password
将显示输入密码提示(在本例中为 admin
)。有关更多信息,请参阅 create-password-alias
、list-password-aliases
和 delete-password-alias
命令的手册页。
domain.xml
中的密码。使用 asadmin
set
命令可以完成此操作。用于此目的的 set
命令的示例如下:
asadmin set server.jms-service.jms-host.default_JMS_host.admin-password=${ALIAS=jms-password}
某些文件包含需要使用文件系统权限进行保护的编码密码。这些文件包括:
/domains/
domain_dir/master-password
此文件包含编码主密码,并且应使用文件系统权限 600 对其进行保护。
--passwordfile
参数创建的、作为参数传递给 asadmin
的密码文件均应使用文件系统权限 600 进行保护。主密码 (MP) 是全局性的共享密码。它从不用于验证,也从不会在网络上传输。此密码是整体安全性的要塞点;用户可以选择在需要时手动输入此密码,也可以将其隐藏在文件中。它是系统中最敏感的数据。用户可以通过删除此文件强制系统提示输入 MP。更改主密码后,系统会将其重新保存到主密码密钥库中。
要更改主密码,必须按照以下步骤进行操作:
asadmin
命令 change-master-password
提示输入旧密码和新密码,然后对所有依赖条目重新进行加密。例如,
asadmin change-master-password>
请输入主密码>
请输入新的主密码>
请再次输入新的主密码>
警告:此时,不能启动正在运行的服务器实例并且不能重新启动运行服务器实例,除非已更改这些实例所对应的节点代理上的 SMP。如果在更改服务器实例的 SMP 之前重新启动了该服务器实例,它将无法启动。
asadmin
change-master-password
命令,然后重新启动节点代理及与其相关的服务器。
管理密码安全性中讨论了如何对管理员密码进行加密。强烈建议您对管理员密码进行加密。如果要在对管理员密码进行加密之前更改管理员密码,请使用 asadmin
set
命令。用于此目的的 set
命令的示例如下:
asadmin set server.jms-service.jms-host.default_JMS_host.admin-password=new_pwd
还可以使用管理控制台更改管理员密码。要使用管理控制台更改管理员密码,请执行以下步骤。
server
,请展开 server-config
节点。default-config
节点。admin-realm
节点。 admin
的用户。将为以下角色指定安全职责:
应用程序开发者负责:
应用程序开发者可以使用 deploytool
等工具来编辑应用程序部署描述符。The J2EE 1.4 Tutorial 中的 "Security" 一章详细讨论了这些安全性任务,您可以从以下 URL 中查看该教程:
应用程序部署者负责:
应用程序部署者可以使用 deploytool
等工具来编辑应用程序部署描述符。The J2EE 1.4 Tutorial 中的 "Security" 一章详细讨论了这些安全性任务,您可以从以下 URL 中查看该教程:
系统管理员负责:
系统管理员使用管理控制台来管理服务器安全性设置,并使用 certutil
来管理证书。本文档主要针对系统管理员。