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

使用证书和 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