创建和安装 SSL 证书

下面的章节描述了如何创建和安装要与 WebSphere Partner Gateway 一起使用的 SSL 证书。其中还概述了 SSL 握手过程。如果您的社区不使用 SSL,则您或您的参与者不需要入站或出站 SSL 证书。

SSL 握手

每个 SSL 会话都从握手开始。

当客户机(参与者或社区管理者)启动消息交换时,发生下列步骤:

  1. 客户机发送一个客户机“hello”消息,它列出客户机的密码能力(按客户机首选项顺序存储),如 SSL 的版本、客户机支持的密码套件以及客户机支持的数据压缩方法。 消息还包含 28 个字节的随机数。
  2. 服务器用一个服务器“hello done”消息响应,该消息包含密码方法(密码套件)和服务器选择的数据压缩方法、会话标识和另一个随机数。
    注: 客户机和服务器必须至少支持一个公共密码套件,否则握手将失败。服务器通常选择功能最强的公共密码套件。
  3. 服务器发送其数字证书。

    服务器认证发生在本步骤中。

  4. 服务器发送“数字证书请求”消息。在“数字证书请求”消息中,服务器发送受支持的数字证书类型和可接受的认证中心的专有名称的列表。
  5. 服务器发送一条服务器“hello done”消息,然后等待客户机响应。
  6. 在接收服务器的“hello done”消息时,客户机验证服务器的数字证书的有效性并检查服务器的“hello”参数是否可以接受。
  7. 如果服务器请求了一个客户机数字证书,则客户机发送数字证书,或者如果没有合适的数字证书,那么客户机发送“无数字证书”警报。 该警报只是一个警告,但如果客户机认证是必需的,那么服务器应用程序会使会话失败。
  8. 客户机发送“客户机密钥交换”消息。该消息包含预主秘(premaster secret),它是一种 46 个字节的随机数, 在生成对称加密密钥和消息认证代码(MAC)密钥时使用,用服务器的公用密钥进行加密。
  9. 如果客户机向服务器发送数字证书,则客户机发送一条用客户机专用密钥签署的“数字证书验证”消息。 通过验证该消息的签名,服务器可以显式地验证客户机数字证书的所有权。
    注: 其他验证服务器数字证书的过程不是必需的。 如果服务器没有属于数字证书的专用密钥,那么它就无法解密预主秘并为对称加密算法创建正确密钥,握手失败。
  10. 客户机使用一系列密码操作,将预主秘转换成主秘,所有加密和消息认证所需的密钥材料都是从那里衍生出来的。 然后,客户机发送“更改密码规范”消息,使服务器切换到最新协商的密码套件。 客户机发送的下一条消息(“已完成”消息)是用该密码方法和密钥加密的第一条消息。
  11. 服务器使用其自己的“更改密码规范”和“已完成”消息响应。

客户机认证需要步骤 4, 79

SSL 握手结束,可以发送加密的应用程序数据。

入站 SSL 证书

本部分描述如何为来自参与者的入站连接请求配置服务器认证和客户机认证。

服务器认证

当 WebSphere Application Server 接收到来自参与者通过 SSL 发送的连接请求时,它使用 SSL 证书。“接收器”提供该证书来将中心标识到参与者。该服务器证书可以自签名,也可以由 CA 签名。在大多数情况下,您可以使用 CA 证书以提高安全性。在测试环境中,可以使用自签名的证书。使用 iKeyman 来生成证书和密钥对。请参考可从 IBM 获取的文档以获取有关使用 iKeyman 的更多信息。

在您生成证书和密钥对之后,请将该证书用于所有参与者的入站 SSL 通信。如果有多个“接收器”或“控制台”,则请将产生的密钥库复制到每个实例。如果证书是自签名的,则将该证书提供给参与者。要获取该证书,请使用 iKeyman 将公共证书抽取到某个文件。

使用自签名证书

如果您将使用自签名的服务器证书,请使用以下过程。

  1. 启动 iKeyman 实用程序,它位于 /<ProductDir>/was/bin 中。 如果这是您第一次使用 iKyman,则请删除密钥库中的“虚拟”证书。
  2. 使用 iKeyman 生成“接收器”或“控制台”密钥库的自签名证书和密钥对。
  3. 使用 iKeyman 将包含公用密钥的证书抽取到文件。

    将密钥库保存到 JKS、PKCS12 或 JCEK 文件。

  4. 将该文件安装到创建好的“接收器”或“控制台”密钥库。
  5. 将证书分发给参与者。首选的分发方法是通过电子邮件以受密码保护的压缩文件形式发送证书。参与者必须向您致电,索取压缩文件形式的密码。
使用 CA 生成的证书

如果您打算使用由 CA 签名的证书,则请使用下列步骤。

  1. 启动 iKeyman 实用程序,它位于 /<ProductDir>/was/bin 目录中。
  2. 使用 iKeyman 生成“接收器”的证书请求和密钥对。
  3. 将证书签名请求(CSR)提交到 CA。
  4. 当从 CA 接收到已签名证书时,使用 iKeyman 将已签名的证书放入密钥库。
  5. 将 CA 证书分发给所有参与者。

客户机认证

如果要认证发送文档的参与者,请执行本部分中的步骤。

安装客户机证书

对于客户机认证,请使用下列步骤:

  1. 获取参与者的证书。
  2. 使用 iKeyman,将一个或多个证书安装到信任密钥库。
  3. 将相关的 CA 放入相关的密钥库中。

注: 当向中心社区添加多个参与者时,可以使用 iKeyman 将其证书添加到信任密钥库。如果参与者离开社区,则可以使用 iKeyman 将该参与者的证书从信任密钥库中除去。
设置客户机认证

安装证书之后,请通过运行实用程序脚本 bcgClientAuth.jacl 来配置 WebSphere Application Server,以使用客户机认证。

  1. 浏览至以下目录:/<ProductDir>/bin
  2. 要打开客户机认证,请按照如下方式调用脚本:
    ./bcgwsadmin.sh -f /<ProductDir>/scripts/bcgClientAuth.jacl
        -conntype NONE set
    注: 要关闭客户机认证,请按照如下方式调用脚本:
    ./bcgwsadmin.sh -f /<ProductDir>/receiver/scripts/bcgClientAuth.jacl
       -conntype NONE clear

要使这些更改生效,请重启 bcgreceiver 服务器。.

验证客户机证书

还有另一项功能可与 SSL 客户机认证一起使用。该功能是通过“社区控制台”启用的。对于 HTTPS,WebSphere Partner Gateway 根据入站文档中的企业标识来检查证书。要使用该功能,请创建参与者概要文件,导入客户机证书,然后将其标记为 SSL。

  1. 导入客户机证书。
    1. 单击帐户管理 > 概要文件 > 社区参与者,然后搜索参与者的概要文件。
    2. 单击证书
    3. 单击装入证书
    4. 选择 SSL 客户机作为证书类型。
    5. 输入证书的描述(这是必需的)。
    6. 将状态更改成已启用
    7. 单击浏览,然后浏览至保存了证书的目录。
    8. 选择证书,然后单击打开
    9. 如果您要选择的网关类型不是生产(缺省值),则从列表选择它。
    10. 单击上载,然后单击保存
  2. 更新客户机网关。
    1. 单击帐户管理 > 概要文件 > 社区参与者,然后搜索参与者的概要文件。
    2. 单击网关
    3. 选择您先前创建的 HTTPS 网关。如果还未创建 HTTPS 网关,请参阅设置 HTTPS 网关
    4. 单击编辑图标以编辑网关。
    5. 对于验证 SSL 客户机证书,选择
    6. 单击保存

出站 SSL 证书

如果您的社区不使用 SSL,则不需要入站或出站 SSL 证书。

服务器认证

当使用 SSL 将出站文档发送给参与者时,WebSphere Partner Gateway 请求来自参与者的服务器端证书。同一个 CA 证书可用于多个参与者。该证书必须是 X.509 DER 格式的。

注: 可以使用 iKeyman 实用程序转换格式。遵循下列步骤来使用 iKeyman 转换格式:
  1. 启动 iKeyman。
  2. 创建一个新的空白密钥库或打开一个现有的密钥库。
  3. 在密钥数据库目录中选择签署者证书
  4. 使用添加选项添加 ARM 证书。
  5. 使用抽取选项将相同的证书抽取为二进制 DER 数据。
  6. 关闭 iKeyman。

将参与者的自签名证书安装到中心操作者概要文件。如果证书是由 CA 签名的,但 CA 根证书和其他任何作为证书链一部分的证书 尚未安装在中心操作者的概要文件中,则将证书安装在中心操作者概要文件中。

  1. 单击证书
  2. 单击装入证书
  3. 选择根和中级作为证书类型。
  4. 输入证书的描述(这是必需的)。
  5. 将状态更改成已启用
  6. 单击浏览,然后浏览至保存了证书的目录。
  7. 选择证书,然后单击打开
  8. 单击上载,然后单击保存

注: 如果 CA 证书已经安装,则不必执行上述步骤。

客户机认证

如果需要 SSL 客户机认证,则反过来参与者将请求来自中心的证书。请使用“社区控制台”将您的证书导入 WebSphere Partner Gateway。 您可以使用 iKeyman 生成证书。如果证书是自签名的,则必须将其提供给参与者。如果它是 CA 签名的证书,则必须将 CA 根证书提供给参与者,以便他们可以将该证书添加到其可信的证书。

您可以有多个 SSL 证书。 一个是主证书,缺省情况下使用它。 另一个是次级证书,如果主证书到期或者无法使用,则使用该证书。

使用自签名证书

如果您将使用自签名证书,则使用以下过程。

  1. 启动 iKeyman 实用程序。
  2. 使用 iKeyman 生成自签名证书和密钥对。
  3. 使用 iKeyman 将包含公用密钥的证书抽取到文件。
  4. 将证书分发给参与者。首选的分发方法是通过电子邮件以受密码保护的压缩文件形式发送证书。参与者必须向您致电,索取压缩文件形式的密码。
  5. 使用 iKeyman 导出 PKCS12 文件格式的自签名证书以及专用密钥对。
  6. 通过“社区控制台”安装自签名证书和密钥。
    1. 单击帐户管理 > 概要文件 > 证书来显示“证书列表”页面。

      确保以中心操作者身份登录进“社区控制台”。

    2. 单击装入 PKCS12
      注: 正在上载的 PKCS12 文件应当只包含一个专用密钥和相关证书。
    3. 选择 SSL 客户机作为证书类型。
    4. 输入证书的描述(这是必需的)。
    5. 将状态更改成已启用
    6. 单击浏览,然后浏览至保存了证书的目录。
    7. 选择证书,然后单击打开
    8. 输入密码。
    9. 如果您要选择的网关类型不是生产(缺省值),则从列表选择它。
    10. 如果有两个 SSL 证书,通过从证书用途列表选择次级, 指出这是主证书还是次级证书。
    11. 单击上载,然后单击保存

如果您正为 SSL 客户机认证和数字签名上载主证书和次级证书,而且正以两个单独的实体上载主证书,则请确保相应的次级证书也是以两个不同实体上载的。

使用 CA 签署的证书

如果您打算使用由 CA 签名的证书,请使用下列步骤:

  1. 使用 iKeyman 生成“接收器”的证书请求和密钥对。
  2. 将证书签名请求(CSR)提交到 CA。
  3. 当从 CA 接收到已签名证书时,使用 iKeyman 将已签名的证书放入密钥库。
  4. 将签名的 CA 证书分发给所有参与者。

添加证书撤销列表(CRL)

WebSphere Partner Gateway 包含证书撤销列表(CRL)功能。 CRL 是由认证中心(CA)颁发的,它标识了拥有已撤销证书的参与者,这些证书是在既定的截止日期前撤销的。拥有已撤销证书的参与者将被拒绝访问 WebSphere Partner Gateway。

CRL 中每个已撤销证书是通过其证书序列号标识的。“文档管理器”每隔 60 秒扫描 CRL,如果某个证书包含在 CRL 列表中,则拒绝该证书。

CRL 存储在以下位置:/<shared_data_directory>/security/crl。WebSphere Partner Gateway 使用 bcg.properties 文件中的设置 bcg.CRLDir 来标识 CRL 目录的位置。

创建包含已撤销证书的 .crl 文件,并将其放入 CRL 目录。

例如,在 bcg.properties 文件中,您必须使用下列设置:

bcg.CRLDir=/<shared_data_directory>/security/crl

支持访问 CRL 分发点

CA 维护并更新 CRL。这些 CRL 通常存储在 CRL 分发点中。进行证书撤销检查时使用 CRL 来确定证书是否被撤销。

当执行撤销检查时,bcgSetCRLDP.jacl 脚本可用于启用或禁用 CRL 分发点检查。 当执行证书的撤销检查时,如果您需要能够访问 CRL 分发点,则启用 CRL 分发点。如果已安装的证书包含 CRL DP 扩展,则可以启用 CRL 分发点,以便在执行撤销检查时访问分发点。如果您在属性 bcg.CRLDir 的 bcg.properties 中设置的目录里下载了所有必需的 CRL,则可能不希望启用 CRL 分发点。如果当前 CRL 可能在 bcg.CRLDir 目录中不可用,则应该启用 CRL 分发点。

通过支持 HTTP 和 LDAP,可以访问 CRL 分发点。您也可以配置代理来访问 CRL 分发点。

注: 对于 Windows 安装,使用本部分中列出的命令中的 bcgwsadmin.bat 而不是 ./bcgwsadmin.sh

要启用 CRL 分发点,请从 <ProductDir>/bin 目录运行以下命令:

./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl install
  <nodename> <serverName> CRLDP

其中:

<server_root>
服务器的根目录(如,/opt/ibm/receiver/was/profiles/bcgreceiver
<serverName>
可以是 bcgdocmgrbcgreceiverbcgconsole。该命令需要从相应的 <server_root> 运行。

要禁用 CRL 分发点,请从 <ProductDir>/bin 目录运行以下命令:

./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl uninstall
 <nodename> <serverName> CRLDP

要启用带有代理的 CRL 分发点,请从 <ProductDir>/bin 目录运行以下命令:

./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl install
  <nodename> <serverName> CRLDP <proxyHost> <proxyPort>

要指定您不想使用代理,请从 <ProductDir>/bin 目录运行以下命令:

./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl
  uninstall <nodename> <serverName> PROXY

如果您正在使用“接收器”用户出口,而且,如果该用户出口使用 SecurityService API,则以上设置也适用于 bcgreceiver 服务器。要对“接收器”运行以上命令,则将 bcgdocmgr 替换为 bcgreceiver

Copyright IBM Corp. 2003, 2005