20.7 配置与 Identity Manager 引擎的相互鉴定

您可以配置相互鉴定,以确保在 Remote Loader 与 Identity Manager 引擎之间进行安全通讯。相互鉴定使用证书而非口令进行握手。Remote Loader 与 Identity Manager 引擎通过交换并验证可信证书颁发机构 (CA) 颁发的公共密钥证书或数字证书或者自我签名证书来相互鉴定。如果相互鉴定成功,Remote Loader 会鉴定到引擎。当 Remote Loader 与 Identity Manager 引擎建立了信任关系,双方均确信它们是在与授权实体通讯后,才会进行同步通讯。

要配置相互鉴定,请执行以下任务:

20.7.1 导出 Identity Manager 引擎和 Remote Loader 的证书

为了让相互鉴定正常工作,您需要有引擎的服务器证书和 Remote Loader 的客户端证书。您可以从 eDirectory 导出证书,也可以导入来自第三方供应商的证书。在大多数情况下,您会从 eDirectory 导出服务器证书,这样不需要花费额外的费用。在某些情况下,您可能想要导出 Remote Loader 的第三方客户端证书。

从 eDirectory 导出证书

身份库中的证书对象称为关键材料对象 (KMO)。此对象可安全地包含证书和数据,包括与用于 SSL 连接的证书关联的公共密钥和私用密钥。要使用相互鉴定,您需要两个 KMO,一个用于引擎,一个用于 Remote Loader。

您可以导出现有的 KMO,也可以创建新的 KMO,然后将其导出。创建客户端 KMO 与创建服务器 KMO 的过程不同。

创建 KMO

要创建服务器 KMO,请执行以下操作:

  1. 登录到 NetIQ iManager。

  2. 在左侧窗格中单击 NetIQ 证书服务器,然后选择服务器证书。

  3. 选择拥有您所创建证书的服务器。

  4. 指定证书的绰号。例如,serverkmo。

  5. 在证书创建方法中选择标准,然后单击下一步。

  6. 复查摘要,单击完成,然后单击关闭。

要创建客户端 KMO,请执行以下操作:

  1. 登录到 NetIQ iManager。

  2. 在左侧窗格中单击 NetIQ 证书服务器,然后选择服务器证书。

  3. 选择拥有您所创建证书的服务器。

  4. 指定证书的绰号。例如,clientkmo

  5. 在证书创建方法中选择自定义,然后单击下一步。

  6. 将默认的组织证书颁发机构保留不变,然后单击下一步。

  7. 取消选择启用扩展密钥使用,然后单击下一步。

  8. 接受其余的证书默认值。

  9. 复查摘要,单击完成,然后单击关闭。

导出 KMO

从 eDirectory 导出引擎和 Remote Loader 将用于相互鉴定的 KMO。

要为 Identity Manager 引擎导出 KMO,请运行 DirXML 命令行 (dxcmd) 实用程序:

dxcmd -user <admin DN> -password <password of admin> -exportcerts <kmoname> <server|client> <java|native|dotnet> <output dir>

其中

  • user 用于指定对驱动程序具有管理权限的用户名。

  • password 用于指定对驱动程序具有管理权限的用户的口令。

  • exportcerts 用于从 eDirectory 导出证书和私用密钥/公共密钥。您必须指定要导出服务器证书还是客户端证书、将使用证书的驱动程序类型以及命令将用于储存此信息的目标文件夹。

例如,dxcmd -user admin.sa.system -password novell -exportcerts serverkmo server java '/home/certs'

此命令会在 /home/certs/ 目录中生成 serverkmo_server.ks 文件。密钥存储区的默认口令为 dirxml。

运行用于为 Remote Loader 导出 KMO 的 dxcmd 命令时,请注意以下事项:

  • dxcmd 实用程序在 LDAP 模式下运行。第一次使用该实用程序时,它会提示您指定信任来自 eDirectory 的证书的选项。根据您的环境,您可以选择仅针对当前会话或针对当前和将来会话信任该证书、信任所有证书,或者选择不信任证书。

  • 如果 Remote Loader 要在 Identity Manager 服务器上运行,请以 LDAP 或点格式运行该命令。如果 Remote Loader 安装在单独的服务器上,请仅以 LDAP 格式运行命令。

  • 在命令中指定 -host 参数可解析能够向 Identity Manager 服务器鉴定的服务器 IP 地址或主机名。

使用以下语法运行命令:

dxcmd -dnform ldap -host <主机 IP 地址> -user <管理员 DN> -password <管理员口令> -exportcerts <KMO 名称> <client> <java|native|dotnet> <输出目录>

表 20-1 不同类型驱动程序的示例

驱动程序类型

命令

输出

Java 驱动程序

dxcmd -dnform ldap -host 194.99.90.218 -user cn=admin,ou=sa,o=system -password novell -exportcerts clientkmo client java '/home/certs'

/home/certs/ 目录中的 clientkmo_client.ks 文件

密钥存储区的默认口令为 dirxml。

本机驱动程序

dxcmd -dnform ldap -host 194.99.90.218 -user cn=admin,ou=sa,o=system -password novell -exportcerts clientkmo client native 'C:\certs'

C:\certs 目录中的 clientkmo_clientcert.pem、clientkmo_clientkey.pem 和 trustedcert.b64 文件

.NET 驱动程序

dxcmd -dnform ldap -host 194.99.90.218 -user cn=admin,ou=sa,o=system -password novell -exportcerts clientkmo client dotnet 'C:\certs'

C:\certs 目录中的 clientkmo_clientcert.pfx 和 trustedcert.b64 文件

为 Remote Loader 导出第三方证书

要将第三方证书与 Remote Loader 搭配使用,您需要将证书导出到 .pfx 文件以及 Base 64 格式的可信根文件中,然后将 .pfx 证书转换为驱动程序使用的格式。例如,本机驱动程序需要 .pem 格式的私用密钥和证书密钥,而 Java 驱动程序需要 .jks 格式的密钥存储区。.NET 驱动程序使用 .pfx 格式的文件。因此,您需要为 .NET 驱动程序转换文件。

本机驱动程序

完成下列步驟:

  1. 从 .pfx 文件中检索 .pem 格式的私用密钥。

    输入诸如 openssl pkcs12 -in servercert.pfx -nocerts -out serverkey.pem –nodes 的命令

  2. 从 .pfx 文件中检索 .pem 格式的证书密钥。

    输入诸如 openssl pkcs12 -in servercert.pfx -nokeys -out servercert.pem 的命令

Java 驱动程序

从 .pfx 文件创建 Java 密钥存储区。输入诸如 keytool -importkeystore -srckeystore servercert.pfx -srcstoretype pkcs12 -destkeystore servercert.jks -deststoretype JKS 的命令。

最后一个步骤是根据驱动程序类型,在 Remote Loader 配置文件中指定信息。有关详细信息,请参见启用驱动程序以进行相互鉴定。

20.7.2 启用驱动程序以进行相互鉴定

要启用驱动程序通讯以进行相互鉴定,请执行以下任务:

使用 KMO 或密钥存储区配置驱动程序

您可以在 Designer 或 iManager 中使用 KMO 或密钥存储区来配置驱动程序。

在 Designer 中,您可以在初始驱动程序创建过程中配置驱动程序,也可以在创建驱动程序之后再配置。

要在 Designer 中配置驱动程序,请执行以下操作:

  1. 在 Designer 中打开您的项目。

  2. 在“建模器”视图的面板中,选择您要创建的驱动程序。

  3. 将驱动程序的图标拖到“建模器”视图上。

  4. 遵循安装向导中的步骤操作。

  5. 在“Remote Loader”窗口中,选择是。

    1. 主机名: 指定用于运行驱动程序 Remote Loader 服务的服务器的主机名或 IP 地址。例如,输入 hostname=192.168.0.1。如果未为此参数指定值,则该值默认为 localhost。

    2. 端口: 指定用于为此驱动程序安装和运行 Remote Loader 的端口号。默认端口号为 8090.

    3. KMO: 指定包含 Remote Loader 用于 SSL 连接的密钥和证书的 KMO 密钥名称。例如,输入 kmo=serverkmo。如果您要配置使用 KMO 进行的相互鉴定,则必须为此参数指定值。您还需要在“其他参数”部分指定根文件参数的值。

    4. 其他参数: 指定您要使用的 Remote Loader 的设置。可以在此参数中包括有关相互鉴定通讯的信息。指定的所有参数都必须使用键值对格式,如下所示:paraName1=paraValue1 paraName2=paraValue2

      例如,对于密钥存储区,请使用以下语法:

      UseMutualAuth=true keystore='/home/certs/serverkmo_server.ks' storepass='dirxml' keypass='dirxml' key='serverkmo'

      例如,对于 KMO,请使用以下语法:

      useMutualAuth=true rootFile='/home/cacert.b64'
    5. 设置口令: 可让您设置或更改应用程序口令。

    6. 删除口令: 删除应用程序的口令。

  6. 单击下一步。

  7. 按照向导中的其余说明操作,直到完成驱动程序的安装。

  8. 复查为了创建驱动程序将要完成的任务摘要,然后单击完成。

或者,您可以在创建驱动程序之后,通过执行以下步骤来配置驱动程序:

  1. 在 Designer 的“概要”视图中,右键单击驱动程序。

  2. 选择属性。

  3. 在导航窗格中,选择驱动程序配置。

  4. 选择鉴定。

  5. 在 Remote Loader 鉴定部分下,指定配置 Remote Loader 与 Identity Manager 引擎间的相互鉴定所需的信息。

    对于 KOM,请使用以下语法:

    hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true kmo=certificatename rootFile=<absolute path to the file>

    例如:

    hostname=192.168.0.1 port=8090 useMutualAuth=true kmo=serverkmo rootFile='/home/cacert.b64'

    对于密钥存储区,请使用以下语法:

    hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true keystore=<absolute path to the keystore file> storepass=<keystore password> key=<alias name> keypass= <password for the key>

    例如:

    hostname=192.99.90.17 port=8097 useMutualAuth=true keystore='/home/certs/serverkmo_server.ks' storepass='dirxml' key='serverkmo' keypass='dirxml' 

要在 iManager 中修改配置,请执行以下操作:

  1. 起动 iManager。

  2. 在概述中,选择 Identity Manager 驱动程序对象。

  3. 在驱动程序对象的属性中,完成以下步骤:

    1. 对于驱动程序模块,请选择连接到 Remote Loader。

    2. 对于驱动程序对象口令,请指定 Remote Loader 用于向引擎鉴定的口令。

      此口令必须与 Remote Loader 中定义的驱动程序对象口令相匹配。

    3. 对于 Remote Loader 连接参数,请指定连接到 Remote Loader 所需的信息。

      对于 KOM,请使用以下语法:

      hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true kmo=certificatename rootFile=<absolute path to the file>

      例如:

      hostname=192.168.0.1 port=8090 useMutualAuth=true kmo=serverkmo rootFile='/home/cacert.b64'

      对于密钥存储区,请使用以下语法:

      hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true keystore=<absolute path to the keystore file> storepass=<keystore password> key=<alias name> keypass= <password for the key>

      例如:

      hostname=192.99.90.17 port=8097 useMutualAuth=true keystore='/home/certs/serverkmo_server.ks' storepass='dirxml' key='serverkmo' keypass='dirxml' 
    4. (可选)对于 Remote Loader 口令,请指定 Identity Manager 引擎(或 Remote Loader shim)鉴定到 Remote Loader 所需的口令。

    5. 单击应用,然后单击确定。

为驱动程序实例配置 Remote Loader

您必须在 Remote Loader 配置文件中配置驱动程序实例。务必在驱动程序的 Remote Loader 配置文件中指定储存密钥文件、证书文件和根文件的目录的绝对路径。

在 UNIX 或 Linux 上配置

修改驱动程序的 Remote Loader 配置文件,以包括用于启用相互鉴定的内容。该文件位于 /opt/novell/dirxml/doc 目录中。

要修改配置,请执行以下操作:

  1. 登录安装了驱动程序和 Remote Loader 的服务器。

  2. 停止 Remote Loader。

    例如,输入以下命令:

    rdxml -config /home/drivershim.conf -u
  3. 在文本编辑器中打开驱动程序的 Remote Loader 配置文件。

  4. 在该文件中添加启用相互鉴定所需的内容。

    • 例如,对于 Java 驱动程序,请添加以下条目:

      -connection "port=8090 useMutualAuth=true keystore='/home/certs/clientkmo_client.ks' storepass='dirxml' key='clientkmo' keypass='dirxml'" 
    • 例如,对于本机驱动程序,请添加以下条目:

      -connection "useMutualAuth=true port=8090 rootfile='/home/certs/trustedcert.b64' certfile='/home/certs/clientkmo_clientcert.pem' keyfile='/home/certs/clientkmo_clientkey.pem' keypass='dirxml' certform=PEM keyform=PEM" 
  5. 保存并关闭文件。

  6. 重启动驱动程序。

在 Windows 上配置

  1. 在 Remote Loader 控制台上,从说明列中选择驱动程序实例。

  2. 单击停止。

  3. 输入 Remote Loader 的口令,然后单击确定。

  4. 单击编辑。

  5. 要修改用于启用相互鉴定的配置信息,请完成以下步骤:

    1. 选择相互鉴定。

    2. 对于本机驱动程序,指定储存用于鉴定的证书的密钥文件路径。该密钥文件的格式必须是 Base 64.

      密钥文件

      指定储存用于鉴定的密钥的文件路径。该密钥文件的格式必须是 Base 64. 例如,从 eDirectory 导出证书中通过 dxcmd 在 C:\certs\ 目录下创建的 clientkmo_clientkey.pem 文件。

      密钥口令

      指定用于鉴定的私用密钥的口令。

      证书文件

      指定储存证书的文件。该证书文件的格式必须是 Base 64. 例如,从 eDirectory 导出证书中通过 dxcmd 在 C:\certs\ 目录下创建的 clientkmo_clientcert.pem 文件。

      可信根文件

      指定包含远程接口 Shim 所用证书颁发者可信根证书的文件的文件名。该可信根文件的格式必须是 Base 64. 例如,从 eDirectory 导出证书中通过 dxcmd 在 C:\certs\ 目录下创建的 trustedcert.b64 文件。

    3. 对于 Java 驱动程序,指定包含证书的密钥存储区文件的路径。该密钥存储区文件必须至少包含一个公共/私用密钥对。

      密钥存储区文件

      指定要用于鉴定的 Java 密钥存储区文件的路径。密钥存储区文件包含加密密钥和证书。该密钥存储区文件必须至少包含一个公共/私用密钥对。例如,从 eDirectory 导出证书中通过 dxcmd 在 C:\certs\ 目录下创建的 clientkmo_client.ks。

      密钥别名

      指定密钥存储区文件中要用于生成对称密钥的公共/私用密钥对的名称。例如,clientkmo。

      密钥存储区口令

      指定用于装载 密钥存储区文件的口令。

      私用密钥口令

      指定密钥存储区中储存的私用密钥的口令。Identity Manager 使用此密钥来加密 SSL 通讯。

    4. 对于 .NET 驱动程序,指定储存用于鉴定的证书的密钥文件路径。

      密钥文件

      指定储存用于鉴定的密钥的文件路径。例如,从 eDirectory 导出证书中通过 dxcmd 在 C:\certs\ 目录下创建的 clientkmo_clientcert.pfx。

      密钥口令

      指定用于鉴定的私用密钥的口令。

      可信根文件

      指定包含远程接口 Shim 所用证书颁发者可信根证书的文件的文件名。该可信根文件的格式必须是 Base 64. 例如,从 eDirectory 导出证书中通过 dxcmd 在 C:\certs\ 目录下创建的 trustedcert.b64 文件。

    5. 单击确定。

  6. 单击确定。