IBM Cognos 最佳实践: 把 IBM Cognos BI 配置为通过 LDAPS 用 Novell eDirectory 8 执行身份验证

文档性质:技巧或技术;产品:IBM Cognos BI;关注领域:安全性

如何配置 IBM Cognos BI LDAP 身份验证提供者以通过 LDAPS 连接 Novell eDirectory 8。

免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 8 Business Intelligence Developer Edition V8.4 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

目的

本文档描述把通过 LDAPS 访问的 Novell LDAP 配置为 IBM Cognos BI 的身份验证源所需的步骤。

适用性

这里描述的技术适用于 Novell eDirectory version 8.7.3 以及 IBM Cognos BI version 8 和 10。

也可能适用于 Novell LDAP 的其他版本,但是没有测试过。

例外与除外责任

对于本文档,假设 Novell eDirectory 实例不是集群配置。关于如何处理集群的 LDAP 服务器参见附录 A。

本文档不讨论如何设置 Novell eDirectory。关于安装这个产品的信息参见 Novell eDirectory 文档。

假设条件

假设读者熟悉 PKI 和 SSL 的概念。


背景知识

动机

在默认情况下,IBM Cognos BI 的 LDAP 身份验证提供者通过 Lightweight Directory Access Protocol (LDAP) 访问 LDAP 服务器,LDAP 是一种基于 TCP/IP 的明文协议。尽管这对于大多数应用程序足够了,而且这些通信常常发生在内部网络上,但是一些环境可能要求用 Secure Socket Layer (SSL) 对通信进行加密。

如果对 LDAP 连接应用 SSL,就称为 LDAPS(安全的 LDAP)。LDAPS 相当常见,对于符合 LDAP v3 的 LDAP 服务器,这是标准的做法。IBM Cognos BI 的 LDAP 身份验证提供者也完全支持 LDAPS 连接。

产品文档(Installation and Configuration Guide,Enable Secure Communication to the LDAP Server)和 Technote 1344083 中描述了为 IBM Cognos BI 配置 LDAPS 的最佳实践。

SSL 基于 Public Key Infrastructure (PKI) 概念,因此需要用证书识别服务器或个人。关于 PKI 的背景知识参见 http://en.wikipedia.org/wiki/Public_key_infrastructure

Novell eDirectory 有点儿特殊,它不只是一种 LDAP 服务器,而且 LDAP 是 Novell 基础设施中的服务之一。本文档讲解如何获得为 IBM Cognos BI LDAP 身份验证提供者配置 LDAPS 所需的证书。

为 IBM Cognos BI 配置 LDAPS

要想让 IBM Cognos BI 中的 LDAP 身份验证提供者支持 LDAPS,需要一个证书数据库文件,其中包含 LDAP 服务器的证书或对 LDAP 服务器证书进行签名的 CA 证书。

这个证书数据库实际上由几个文件组成(cert7.db 和 key3.db),必须使用 Netscape Network Security Services (NSS) 提供的外部工具 “certutil” 构建它。IBM Cognos BI LDAP 身份验证提供者使用 Netscape LDAP SDK,这个 SDK 也使用 NSS。但难题是 NSS 有不同的版本,必须使用正确的 certutil 版本才能创建对于 IBM Cognos BI 有效的证书数据库。必须根据 IBM Cognos BI 的版本使用此工具的不同版本。

为简单起见,建议坚持使用文档和技术说明中提到的版本 NSS-3.3.2。

近期的 certutil 版本 (NSS 3.6+) 不再创建 cert7.db 文件,而是创建 cert8.db 文件。但是,cert8.db 与 IBM Cognos 8 不兼容,它们与 IBM Cognos 10 兼容。同样,应该坚持使用 NSS-3.3.2。关于如何获得 certutil 工具参见文档和技术说明。

为了创建证书数据库,需要对 LDAP 服务器证书进行签名的 CA 证书或服务器的证书。最佳实践是使用 CA 证书。对于这两种情况,都必须使用 certutil 工具把证书导入新的证书数据库,创建的数据库由两个文件组成(对于近期的 NSS 版本,是三个文件)。然后,在 IBM Cognos Configuration 中的 LDAP 名称空间配置中引用这个数据库。

当连接 LDAP 服务器时,LDAP 服务器在 SSL 握手过程中提供它的证书,IBM Cognos BI 根据证书数据库中存储的证书检查它是否可信。如果提供的证书是可信的,就建立连接,然后可以开始实际的 LDAP 通信。

为 Novell eDirectory 配置 LDAPS

使用 Novell eDirectory 的主要难题是,Novell 使用它自己的 CA (Certifying Authority) 颁发 Novell LDAP 服务使用的服务器证书。这意味着需要导出 Novell CA 证书(这很麻烦)或由 CA 颁发的 LDAP 服务证书(这也不容易)。您需要选择合适的做法。对于本文档,我们只导出 LDAP 服务证书。


针对 Novell eDirectory 配置 LDAPS

前提条件

  • 在开始操作之前,要确认您对 Novell 管理控制台 Novell iManageradministrative 访问权。
  • 下载 NSS-3.3.2 并准备好 certutil 工具(参见 IBM Cognos BI Installation and Configuration Guide 或 Technote 1344083)。

获得 LDAP 服务证书

识别服务器 “Key Material Object”

Novell 使用四种不同的服务器证书,其中两种使用 Novell 网络名称作为证书主题,这与 IBM Cognos BI 不兼容。Cognos 要求用服务器的 IP 或 DNS 名称作为服务器证书的主题。

这意味着要确认 Novell eDirectory 配置为使用以下两种证书之一:

  • SSL CertifcateDNS
  • SSL CertificateIP

如果不是这样,必须修改 Novell eDirectory 配置,IBM Cognos BI 才能通过 LDAPS 连接 Novell eDirectory。

按以下步骤检查配置:

  1. 作为 Administrator 登录 iManager。访问 iManager 的 URL 是 http://server:port/nps/Manager.html。在 Username 和 Password 框中输入安全容器 Admin 的用户凭证。
    图 1. 作为 Administrator 登录 iManager
    作为 Administrator 登录 iManager
  2. 展开 LDAP 元素并单击 LDAP overview。
    图 2. 在 iManager 中找到 LDAP overview
    在 iManager 中找到 LDAP overview
  3. 切换到 “View LDAP Servers” 选项卡并选择自己的服务器。
    图 3. 在 iManager 中选择 LDAP 服务器
    在 iManager 中选择 LDAP 服务器
  4. 单击 “Connections”。
    图 4. 切换到所选 LDAP 服务器的 Connections 选项卡
    切换到所选 LDAP 服务器的 Connections 选项卡
  5. “Server Certificate” 框显示当前为这个服务器配置的 “Key Material Object” 的名称。这是四种可用的证书之一。在下面的示例中,它是 “SSL CertificateIP”。单击它旁边的按钮可以选择其他 Key Material。
    “Client Certificate” 框的值是 “Not Requested”、“Requested” 或 “Required”。
    如果 “Blind Restrictions” 框设置为 “Disallow Anonymouse Simple Bind”,就需要指定要绑定的凭证。
    图 5. 在 iManager 中识别为 LDAP 服务器配置的证书
    在 iManager 中识别为 LDAP 服务器配置的证书
    如果 Server Certificate 框显示除以下两项之外的任何其他设置
    - “SSL CertifcateDNS”
    - “SSL CertificateIP”
    那么在通过 LDAPS 访问时这个服务器当前与 IBM Cognos BI 不兼容。但是,不加密的 LDAP 连接仍然是有效的。为了解决这个问题,必须修改 Novell LDAP 服务器的配置,让它使用基于 DNS 名称的证书(首选方法)或基于 IP 的证书。
    另外,Novell LDAP 服务器必须不请求客户机证书。确认这个设置符合要求,否则必须修改它,因为对于 SSL IBM Cognos BI 不支持与 LDAP 服务器进行相互身份验证。
    确认选中了 Enable Encrypted Port 旁边的复选框。
    注意加密的端口号。通过查看 Bind Restrictions 的值,检查是否启用了匿名绑定。它应该是禁用的。
    警告:因为这些是一般性配置更改,必须符合客户的要求,必须由客户的 Novell 管理员执行这些步骤。这不是 IBM Cognos 任务!

导出 “Key Material Object”

既然已经配置并识别了所需的 “Key Material Object”,现在就要导出服务器证书。步骤如下:

  1. 在左边的菜单中,展开 “eDirectory Administration” 并单击 “Modify Object”。
    图 6. 在 iManager 中找到 Modify Object
    在 iManager 中找到 Modify Object
  2. 在出现的页面上,单击放大镜打开 “Object Selector” 对话框。
    图 7. 单击放大镜打开 Object Selector
    单击放大镜打开 Object Selector
  3. 单击组织的树,比如这个示例中的 COGNOS。
    图 8. 通过单击箭头展开组织树
    通过单击箭头展开组织树
  4. 现在,Object Selector 会列出所需的 Key Material Object。可以通过钥匙图标识别它们。单击想要修改的对象。在下面的屏幕上,可以看到 “SSL CertificateIP” 对象。
    图 9. 在 Object Selector 中选择适当的密钥
    在 Object Selector 中选择适当的密钥
  5. 注意,Object Name 现在显示选择的 Key Material Object。单击 OK 打开它的属性。
    图 10. 选择密钥之后,单击 OK 继续
    选择密钥之后,单击 OK 继续
  6. 切换到 “Certificates” 选项卡查看这个密钥对象的证书。
    图 11. 切换到选择的密钥对象的 Certificates 选项卡
    切换到选择的密钥对象的 Certificates 选项卡
  7. 现在会看到这个 Key Material Object 对象的证书。在默认情况下,显示 “Trusted Root” 证书(可以通过查看 Subject 和 Issuer 属性确认)。如果愿意,可以导出这个证书而不是服务器证书。如果要获得服务器证书,需要单击 “Public Key Certificate”。
    图 12. 通过单击名称选择根证书或实际证书
    通过单击名称选择根证书或实际证书
  8. 单击 “Export…” 打开 Export Certificate Wizard。
    图 13. 单击所选证书的 Export
    单击所选证书的 Export
  9. 当询问是否与证书一起导出私有密钥时,选择 “No” 并单击 “Next”。对于输出格式,选择 “File in Base64 format”。
    图 14. 在 Export Certificate Wizard 中选择 Next
    在 Export Certificate Wizard 中选择 Next
    图 15. 在 Export Certificate Wizard 中选择 Base64 格式
    在 Export Certificate Wizard 中选择 Base64 格式
  10. 在 Summary 屏幕上,单击 “Save the exported certificate to a file”。
    图 16. 在向导的 Summary 页面中把导出的证书保存到文件
    在向导的 Summary 页面中把导出的证书保存到文件
  11. 浏览器会显示文件下载对话框。单击 Save。当提示指定文件名时,把扩展名改为 “.cer” 或 “.pem”。
    图 17. 当浏览器提示时选择保存文件
    当浏览器提示时选择保存文件
    不要被文件类型误导了。这是一个 ASCII 文件,但是由于扩展名,它会与 WinZip 相关联。保存它,但是要把扩展名改为 .pem。

创建证书数据库

  1. 进入自己的 NSS 的 /bin 子目录。
  2. 创建用于存储密钥的子目录,比如 /mykeys。
  3. 使用以下命令创建一个新的 NSS 证书数据库:
    certutil -N -d <cert_directory>
    示例:certutil -N -d mykeys
    当出现提示时,为证书数据库指定密码。
    这会在当前子目录中创建 “cert7.db” 文件(如果使用 NSS 3.6+,就是 cert8.db 文件)和 key3.db 文件(还可能有 secmod.db 文件)。这些文件组成证书数据库,因此应该把这个子目录看作一个实体。此目录中的文件应该一直放在一起。
  4. 使用以下命令(全部在同一行上)把服务器证书添加到新的证书数据库中:
    certutil -A -n <cert_name> -t P -d <PATH>/<cert_directory> -i <PATH>/<certificate_file>
    其中:
    <cert_name> 是给证书数据库中的证书指定的任意名称。使用主机名是一种好做法。
    <PATH> 指定子目录的驱动器盘符和文件夹路径。
    <cert_directory> 指定证书数据库使用的子目录。在前一步中,certutil 已经在这个位置创建了空的数据库。
    示例:
    certutil -A -n MyServerName –t P -d <PATH>/mykeys -i <PATH>/server.cer
    可能像下面这样:
    C:\<PATH>\certutil -A -n MyServer -t P -d C:\testSSL\NSS\bin\mykeys -i C:\testSSL\NSS\bin\mykeys\server.cer

配置 IBM Cognos 名称空间

按照 Installation and Configuration Guide "Configure an LDAP Namespace for Novell Directory Server" 中描述的步骤,为 Novell eDirectory 配置名称空间。

只需对文档描述的步骤做两个改动:

  • 使用不同的端口,端口需要与 iManager 控制台中的 “encrypted port” 匹配。
  • 必须在 “SSL certificate database” 属性中指定 3.2 节中创建的证书数据库 (cert7.db)。

名称空间属性应该像下面这样:

图 18. 用于 Novell LDAP 的 Cognos Configuration LDAP 名称空间属性
用于 Novell LDAP 的 Cognos Configuration LDAP 名称空间属性

这样配置之后,可以通过右键单击 Cognos Configuration 测试名称空间。如果一切正常,测试会成功。如果出现错误,请参考第 4 节排除故障。

注意:在 RP1 之前 IBM Cognos BI 中有一个软件问题 (COGCQ00036945):在测试 LDAPS 连接之后,Cognos Configuration 会关闭。8.4.1 版中解决了这个问题,而且它不影响功能。只需确保在测试配置之前保存配置。


故障排除

在测试或登录时,可能会出现几种错误(但是如果按照本文档操作,这是不可能的)。本节提供一些故障排除建议。

CAM-AAA-0026 The function call to "ldap_simple_bind_s" failed with error code "81". Can’t contact LDAP server.

这基本上意味着 SSL 握手失败了。最可能的原因是使用了证书数据库中错误的证书。检查证书的主题(应该是 DNS 名称)和证书信任选项。

按第 3 节中的步骤检查当前的配置,或者使用 OpenSSL 检查服务器提供的证书(见附录 B)。

另外,通过查看 cert7.db 的内容检查主题名称是否匹配(参见 IBM Technote 1339946)。

图 19. Cognos Configuration 错误详细信息
Cognos Configuration 错误详细信息

CAM-AAA-0026 The function call to "ldap_simple_bind_s" failed with error code "32". No such Object

BaseDN 是无效的。检查指定的 BaseDN。要记住,在 Novell 中 BaseDN 是区分大小写的!使用第三方 LDAP 浏览器检查 BaseDN。

CAM-AAA-0026 The function call to "ldap_simple_bind_s" failed with error code "91". Can’t connect

无法连接 LDAP 服务器。

检查主机和端口。使用 ping 或 traceroute 确认 DNS 和 NETBIOS 名称。确认端口。

CAM-AAA-0178 The main identity returned by the provider is invalid. The result returned contains an ancestor <some_camid> with empty title.

这常常在登录时发生。它表示在 Novell eDirectory 内权限不足。根据是否配置了 SSO,LDAP 安全设置阻止了作为 BindCredentials 提供的用户(SSO)或尝试登录的实际用户(非 SSO)。

需要给用户分配权限 [All Attribute Rights],至少应该分配 Read 和 Compare 权限。

使用第三方 LDAP 浏览器确认此用户可以看到错误消息中指定的祖先或对象。


附录 A – 集群的 eDirectory

Novell 有 “集群” 的概念,即把 LDAP 服务器链接起来以实现负载平衡或故障转移。

对于 IBM Cognos BI,这个概念必须是透明的,因为在 Cognos Configuration 中只能配置一个服务器连接。

由于这个原因,IBM Cognos BI 并不显式地支持集群的 LDAP 服务器,IBM Cognos 也不检查这种配置。

在 Cognos Configuration 中,只需指定路由器或某个共用节点的地址和端口,而不是直接指定服务器的地址和端口,不需要修改其他设置。根据路由请求的位置不同,目标服务器会返回它的证书。

这个场景中的最佳实践是根据 Novell CA 证书建立信任(可以按 3.2.2 节中的第 6 步导出 Novell CA 证书)。


附录 B – 人工地识别服务器证书

如果无法访问 iManager 控制台,但是需要查明服务器提供的证书,可以采用以下方法。

获取并安装 OpenSSL 包(可以在 http://www.openssl.org 找到它)。它是开放源码的,所以应该可以随意下载和使用它进行测试,而不会有法律问题。如果不确定,必须咨询公司的法律部门或经理。

安装之后,进入安装根目录并执行以下命令,它让 OpenSSL 作为 SSL 客户机运行:

openssl s_client -connect <yourserver>:<yourport>

示例:

openssl s_client –connect wcsfrkelab43:636
Loading 'screen' into random state - done
CONNECTED(0000074C)
depth=1 /OU=Organizational CA/O=NOVELL
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
 0 s:/CN=localhost/O=.NOVELL.
   i:/OU=Organizational CA/O=NOVELL
 1 s:/OU=Organizational CA/O=NOVELL
   i:/OU=Organizational CA/O=NOVELL
 2 s:/OU=Organizational CA/O=NOVELL
   i:/OU=Organizational CA/O=NOVELL
---
Server certificate
-----BEGIN CERTIFICATE-----
<some cryptical text>
-----END CERTIFICATE-----
subject=/CN=localhost/O=.NOVELL.
issuer=/OU=Organizational CA/O=NOVELL
---
No client certificate CA names sent
---
SSL handshake has read 4176 bytes and written 474 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 6CEB9AC92D61B38B3901D44FB36D9A03FBE97C4D2640A3DC12DFC5F9411729B4
    Session-ID-ctx:
    Master-Key: 71B785B70A8434E13C7879ACC51A6B83EC9A0DE454E880D54915B9ADE4B58D93
5D86C64635B11F50910690B917E70415
    Key-Arg   : None
    Start Time: 1151583664
    Timeout   : 300 (sec)
    Verify return code: 19 (self signed certificate in certificate chain)
---

可以在其中看出服务器提供主题为 “CN=localhost,O=.Novell.” 的证书。根据 “certificate chain” 下面的输出可以推断出,实际上有一个证书链。S 代表主题,I 代表颁发者。我们感兴趣的是证书 0。

对于这个示例,服务器提供主题为 “CN=localhost,O=.Novell.” 的证书。在您使用的 cert7.db 文件中应该能够找到这个证书。


附录 C – 检查证书数据库

可以使用执行导入时使用的工具 certutil 列出证书数据库的内容。

  • 进入 <NSS_ROOT>/bin 目录。
  • 使用以下命令列出证书数据库的内容:
    certutil –L –d <folder>
    这会按证书的别名列出数据库中的所有证书。注意这些名称,下一个命令需要使用它们。
  • 现在执行以下命令:
    certutil –L –d <folder> -n <certalias>
    这会在屏幕上列出证书的内容。在输出中寻找 “Subject”。它必须与服务器提供的证书的主题匹配。

参考资料

学习

获得产品和技术

讨论

  • 参与 developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=677518
ArticleTitle=IBM Cognos 最佳实践: 把 IBM Cognos BI 配置为通过 LDAPS 用 Novell eDirectory 8 执行身份验证
publish-date=06022011