从 CertGen 实用工具、Sun Microsystem 的 keytool 实用工具,或著名的供应商如 Entrust 或 Verisign 处获取数字证书、私钥和可信 CA 证书。也可使用由 WebLogic Server 工具包提供的数字证书、私钥和可信 CA 证书。只应将演示数字证书、私钥和可信 CA 证书用在开发环境中。
存储私钥、数字证书和可信 CA 证书。私钥和可信 CA 证书存储在密钥库中。
注意:
首选的密钥库格式为 JKS(Java 密钥库)。WebLogic Server 支持将私钥和可信 CA 证书存储在文件或 WebLogic 密钥库提供程序中,仅仅是为了满足向后兼容的目的。
在 WebLogic Server 管理控制台中配置 WebLogic Server 的标识和信任密钥库。请参阅“管理控制台联机帮助”中的配置密钥库。
以下各部分将描述这些步骤。 标识和信任的受支持格式
保密邮件(Privacy Enhanced Mail,简称 PEM)格式是私钥、数字证书和可信证书颁发机构(Certificate Authorities,简称 CA)的首选格式。首选的密钥库格式为 Java 密钥库(Java KeyStore,简称 JKS)格式。
.pem 格式的文件以下行开始:
----BEGIN CERTIFICATE----
并以下行结束:
----END CERTIFICATE----
.pem 格式的文件可支持多种数字证书(如可包含证书链)。证书在文件中的顺序非常重要。服务器的数字证书应为文件中的第一个数字证书,其后是发行方证书,等等。链中的每个证书后都跟有其发行方证书。如果链中最后一个证书为链的自签名(自发行)根证书,则将此链视为完整的链。请注意,链并不一定是完整的。
在使用不赞成的基于文件的私钥、数字证书和可信 CA 时,WebLogic Server 可使用 PEM 或识别编码规则(Distinguished Encoding Rules,简称 DER)格式的数字证书。
.der 格式的文件包含了单个证书的二进制数据。因此,一个 .der 文件仅可用于单个证书,而一个 .pem 文件可用于多个证书。
Microsoft 是常用的证书颁发机构。Microsoft 发行的可信 CA 证书采用 p7b 格式,必须将其转换为 PEM 格式才能在 WebLogic Server 中使用。有关详细信息,请参阅将 Microsoft p7b 格式转换为 PEM 格式。
私钥文件(即不存储在密钥库中的私钥)必须采用 PKCS#5/PKCS#8 PEM 格式。
还可以将使用其他 WebLogic Server 版本的私钥和数字证书与此 WebLogic Server 版本一起使用。将私钥和数字证书从识别编码规则 (DER) 格式转换为保密邮件 (PEM) 格式。有关详细信息,请参阅“WebLogic Server 命令参考”中的“使用 WebLogic Server Java 实用工具”中有关 der2pem 实用工具的描述。
转换文件后,确保数字证书文件具有
-----BEGIN CERTIFICATE----- 头信息和 -----END CERTIFICATE----- 尾信息。否则,数字证书将无效。
注意:
OpenSSL 可以为其生成的 PEM 证书添加头信息。为了在 WebLogic Server 中使用这样的证书,应删除证书中“-----BEGIN CERTIFICATE-----”之前的所有内容,使用文本编辑器可执行此操作。
获取私钥、数字证书和可信证书颁发机构
服务器需要一个私钥、一个包含匹配的公钥的数字证书以及一个至少用于一个可信证书颁发机构的证书。WebLogic Server 支持来自以下来源的私钥、数字证书和可信 CA 证书:
位于 WL_HOME\server\lib 目录和 JAVA_HOME\jre\lib\security 目录中的演示数字证书、私钥和可信 CA 证书。
只应将演示数字证书、私钥和可信 CA 证书用在开发环境中。
Sun Microsystem 的 keytool 实用工具也可用于生成私钥、WebLogic Server 自签名的数字证书以及证书签名请求(Certificate Signing Request,简称 CSR)。
将 CSR 提交给证书颁发机构以获取 WebLogic Server 的数字证书。
使用 keytool 实用工具用新的数字证书更新自签名的数字证书。
在生产环境中使用 WebLogic Server 时,应使用 keytool 实用工具获取信任和标识。
有关 Sun 的 keytool 实用工具的详细信息,请参阅位于 http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html 的“keytool-Key and Certificate Management Tool”描述。
注意:
使用 keytool 实用工具时,默认的密钥对生成算法为数字签名算法(Digital Signature Algorithm,简称 DSA)。WebLogic Server 不支持 DSA。在使用 WebLogic Server 时,应指定其他的密钥对生成和签名算法。
keytool 实用工具是 Sun Microsystems 的产品。因此,BEA Systems 不提供有关此实用工具的完整文档。有关详细信息,请参阅位于 http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html 的“keytool-Key and Certificate Management Tool”描述。
此向导会向输出文件追加一个 .cer 扩展名,.cer 扩展名是追加在 Base 64 编码的证书和 DER 证书后的通用扩展名。退出此向导后,可将此扩展名更改为 .pem。
验证设置是否正确。如果设置正确,请单击“完成”;如果不正确,请单击“上一步”并进行必要的修改。
注意:
对于包含证书链的 p7b 证书文件,需要将发行方 PEM 数字证书连接到此证书文件。WebLogic Server 可使用生成的证书文件。
从 Web 浏览器获取数字证书
低安全性的浏览器证书极易获得,可从 Web 浏览器中获取,通常可选择“选项”或“首选项”中的“安全”菜单项。转到“个人证书”项并请求获取新的数字证书。将询问一些有关您自己的信息。
您收到的数字证书包含有公共信息(包含您的姓名和公钥)和一些希望由第三方进行身份验证的其他信息,如您的电子邮件地址。稍后在请求身份验证时,您将提供此数字证书。
在获取数字证书的过程中,Web 浏览器会生成一个公钥-私钥对。私钥仍应保密。它存储在本地文件系统中,并且始终不得离开 Web 浏览器所在的计算机,以确保获取数字证书的过程本身是安全的。在某些浏览器中,可用密码对私钥进行加密,不对密码进行存储。在加密私钥时,Web 浏览器在每次会话中至少会向您询问一次密码。
注意:
从 Web 浏览器获取的数字证书在其他类型的 Web 浏览器中或在相同 Web 浏览器的不同版本上无法工作。
请确保所有数字证书都采用 PEM 格式。如果采用 DER 格式,可以使用 der2pem 实用工具对其进行转换。如果所用的数字证书是由 Microsoft 发行的,请参阅将 Microsoft p7b 格式转换为 PEM 格式。可使用本部分中的步骤转换其他类型的数字证书。将数字证书保存为 Base 64 格式。
总的来说,同一域中的系统具有相同的信任规则(使用同一组可信 CA),而它们所具有的标识却可能是按每个服务器规定的。标识要求一个私钥,不应将私钥在系统间复制。因此,应为每个系统维护独立的标识密钥库,每个密钥库应仅包含该系统所需要的服务器标识。但是,可在系统间复制信任密钥库,这使得标准化信任规则变得很容易。
标识更有可能存储在硬件密钥库中,如 nCipher。信任可存储在基于文件的 JDK 密钥库中而不会有任何安全问题,原因是信任库只包含证书,而不包含私钥。 创建密钥库并将私钥和可信证书颁发机构加载到密钥库中
使用密钥库的目的是实现私钥/数字证书对和可信 CA 证书的安全存储和管理。使用以下机制可创建密钥库并将私钥和可信 CA 证书加载到密钥库中:
WebLogic ImportPrivateKey 实用工具。使用 ImportPrivateKey 实用工具可拾取私钥和数字证书文件并将其加载到密钥库中。有关详细信息,请参阅“WebLogic Server 命令参考”中的 ImportPrivateKey。
Sun Microsystem 的 keytool 实用工具。使用 keytool 实用工具可生成私钥/数字证书对并将已签名的私钥导入密钥库中。有关详细信息,请参阅 WebLogic Server 如何定位信任。虽然使用 keytool 实用工具可以生成新的私钥和数字证书并将它们添加到密钥库中,但此实用工具并不允许从文件中拾取现有的私钥并将其导入密钥库中。应改用 WebLogic ImportPrivateKey 实用工具。
注意:
keytool 实用工具不允许将可信 CA 证书从文件中导入至密钥库中。
自定义实用工具。WebLogic Server 可使用由自定义工具或实用工具创建的密钥库。如何创建和使用这些实用工具已超出本文档的范围。
WebLogic Server 通过唯一的别名对密钥库中的所有私钥项进行访问。在将私钥加载到密钥库中时可指定别名。别名区分大小写;别名 Hugo 和 hugo 指的是同一密钥库项。私钥的别名是在 WebLogic Server 管理控制台的“配置”>“SSL”页的“私钥别名”字段中指定的。尽管 WebLogic Server 在访问可信 CA 证书时并不使用别名,但密钥库在将可信 CA 证书加载到密钥库时确实要求使用别名。
密钥库中由 WebLogic Server 识别为可信的所有证书颁发机构都为可信。 WebLogic Server 如何定位信任
WebLogic Server 在加载其可信 CA 证书时使用以下算法:
如果密钥库是由 -Dweblogic.security.SSL.trustedCAkeystore 命令行参数指定的,则将从密钥库加载可信 CA 证书。
否则,如果密钥库是在配置文件 (config.xml) 中指定的,则将从指定的密钥库加载可信 CA 证书。如果服务器是用 DemoTrust 配置的,将从 WL_HOME\server\lib\DemoTrust.jks 和 JDK cacerts 密钥库加载可信 CA 证书。
否则,如果可信 CA 文件是在配置文件 (config.xml) 中指定的,则将从此文件加载可信 CA 证书(这仅仅是为了与 6.x SSL 配置兼容)。
否则,将从 WL_HOME\server\lib\cacerts 密钥库加载可信 CA 证书。
配置用于生产环境的密钥库
默认情况下,WebLogic Server 配置有两个密钥库:
DemoIdentity.jks - 包含 WebLogic Server 的演示私钥。此密钥库包含 WebLogic Server 的标识。
这些密钥库位于 WL_HOME\server\lib 目录中。对于测试和开发来说,密钥库配置是完全的。但是,请不要在生产环境中使用此演示密钥库。由于演示密钥库中的数字证书和可信 CA 证书是由 WebLogic Server 演示证书颁发机构签名的,所以使用演示密钥库的 WebLogic Server 安装将信任任何同样使用演示密钥库的 WebLogic Server 安装。需要创建只在您的安装之间互相信任的安全环境。
要配置生产环境中使用的密钥库,请执行以下操作:
从一家著名的证书颁发机构(如 Verisign, Inc. 或 Entrust.net)获取私钥和数字证书。请参阅获取私钥、数字证书和可信证书颁发机构。
创建标识和信任密钥库。请参阅创建密钥库并将私钥和可信证书颁发机构加载到密钥库中。
将私钥和可信 CA 加载到标识和信任密钥库中。请参阅创建密钥库并将私钥和可信证书颁发机构加载到密钥库中。
使用 WebLogic Server 管理控制台可配置标识和信任密钥库。请参阅“管理控制台联机帮助”中的配置密钥库。