知识库

在升级到 Tableau Server 2021.2 后,使用 SAML 身份验证的 Tableau Server 无法启动或拒绝登录


发布时间: 15 Jun 2020
上次修改日期: 08 Nov 2022

问题

在升级到使用 SAML 进行用户身份验证的 Tableau Server 2021.2 或更高版本后,Tableau Server 无法启动,因为证书不符合安全设置,VizPortal 日志将显示以下其中一个错误,这取决于使用的密钥类型。 

摘要算法: 
SAML 证书验证失败



不允许当前证书使用摘要算法。

证书密钥/椭圆曲线大小: 
密钥大小小于允许的最小密钥大小

或者

椭圆曲线大小不符合所需的最小允许曲线大小

环境

Tableau Server 2021.2 和较新版本。

解决方案

在开始前,查明 Tableau Server 安装是否受影响

检查上传的证书,配置 SAML 身份验证。从运行 Tableau Server 的计算机上,运行以下命令来验证文件系统中的私钥和公钥是否满足最小密钥/曲线大小,以及摘要算法不是 SHA-1:

tsm configuration get -k wgserver.saml.key.file 
tsm configuration get -k wgserver.saml.cert.file

或者,通过 TSM GUI,您可以下载服务提供商 (SP) 元数据文件,并将 Tableau SP 证书内容粘贴到此处。有关说明,请查看配置服务器范围 SAML 的步骤 6a。

通过从 TSM 下载 IdP 元数据 xml 文件,或直接从 IdP 重新下载,您可以检查身份提供商 (IdP) 提供的证书。 

理想情况是,使用选项 1,将所有签名算法升级到 SHA-256,其中包含适用于 IdP 的算法。  有关 SHA-1 可用作 SAML 身份验证一部分的所有潜在区域,请查看“附加信息”。 

如果 IdP 仅支持 SHA-1,使用选项 2。 
单击以展开解决方案
选项 1:升级 SAML 证书和 IdP 证书,使用强摘要算法和密钥属性
更新 Tableau Server 证书和密钥文件
  1. 停止 Tableau Server
  2. 更新证书和密钥,并确保在所有受影响的区域使用 SHA-256 和 RSA 2048 或 ECDSA 256。
  3. 保存新证书和密钥文件,然后,在配置 Tableau Server 的 SAML 选项卡中,更改证书和密钥文件。
  4. 有关配置 SAML 证书和密钥文件的更多信息,请查看配置服务器范围的 SAML
  5. 导出 Tableau 元数据的 XML,与 IdP 进行交换。

更新 IdP 元数据
  1.  转到 IdP 帐户;根据需要,更新证书和/或签名算法。这是特定于 IdP 的操作;因此,请参阅文档,了解关于如何执行此操作的步骤。上载 Tableau 元数据 XML 文件(如适用)。
  2. 按照 IdP 网站或文档中的说明,下载 IdP 的元数据。保存 .xml 文件的位置与保存 SAML 证书和密钥文件的位置相同。
  3. 在 TSM 中,上载 IdP 元数据 XML 文件。
  4. 输入 TSM 密码,然后单击“确定”。
  5. 启动 Tableau Server。
  6. 对于特定于站点的 SAML,更新站点中 IdP 的元数据 xml 文件。
 
注意:从 2021.2 开始,如果为多个站点设置站点 saml,tabcmd 实用程序有助于检查 IdP 元数据。这可以减轻查明哪些站点的 IdP 元数据不安全的负担。请查看 tabcmd validateidpmetadata。
 
单击以展开解决方案
选项 2(解决方法):如果您已升级并且无法启动 Tableau Server
  1. 使用以下命令,禁用新默认摘要算法阻止列表:
    tsm configuration set -k wgserver.saml.blocklisted_digest_algorithms -v ""
    tsm pending-changes apply
  2. 通过以下命令,禁用新密钥验证设置:
    tsm configuration set -k wgserver.saml.min_allowed.rsa_key_size -v "0"

    以及/或者

    tsm configuration set -k wgserver.saml.min_allowed.elliptic_curve_size -v "0"

    根据您使用的密钥类型,然后运行
    tsm pending-changes apply
  3. 启动 Tableau Server。
 
单击以展开解决方案
选项 3(解决方法):如果您无法升级 Tableau Server 并且需要 SHA-1 密钥/算法。
 
  1. 停止 Tableau Server。
  2. 使用以下命令,禁用新默认摘要算法阻止列表:
    tsm configuration set -k wgserver.saml.blocklisted_digest_algorithms -v ""
    tsm pending-changes apply
  3. 通过以下命令,禁用新密钥验证设置:
    tsm configuration set -k wgserver.saml.min_allowed.rsa_key_size -v "0"

    或(根据您使用的密钥类型)

    tsm configuration set -k wgserver.saml.min_allowed.elliptic_curve_size -v "0"

    并运行:
    tsm pending-changes apply
  4. 升级 Tableau Server (Windows) (Linux)。

注意:在禁用这些安全设置的情况下,只要需要,您可以使用此格式正常运行 Tableau Server。

尽快:
  1. 升级 SAML 证书和 IdP 证书,使用上述选项 1 概览的 SHA-256 或强证书。
  2. 重新启动 Tableau Server。
  3. 使用以下命令,重新启用安全设置:
tsm configuration set -k wgserver.saml.blocklisted_digest_algorithms -v “sha1”

tsm configuration set -k wgserver.saml.min_allowed.rsa_key_size -v “2048”



tsm configuration set -k wgserver.saml.min.elliptic_curve_size -v “256”

然后,运行 tsm pending-changes apply。
 

原因

Tableau Server 2021.2 会自动阻止带有 SHA-1 签名哈希的证书。
要验证实例是否阻止 SHA-1,您可以运行以下命令:
tsm configuration get -k wgserver.saml.blocklisted_digest_algorithms

如果 Tableau Server 返回“sha1”,则表明 Tableau Server 正在阻止 SHA1 证书。

其他信息

默认情况下,在配置 Tableau Server 进行 SAML 身份验证时,Tableau Server 2021.2 及更高版本将拒绝使用 SHA-1 签名哈希进行证书上传;默认情况下,Tableau Server 将拒绝使用 SHA-1 算法签名的 SAML 断言。需要注意的是,系统共有多个位置支持在 Tableau 和 idP 端使用 SHA-1;因此,还有多个位置和时间点需要验证。例如:
  • 对于使用 SHA-1 签名的证书,它们将通过 TSM(CLI 和 GUI)上传,并使用 Tableau Server 对发送到 IdP 的请求进行签名
  • 使用 IdP 元数据中的证书,验证通过证书中的公钥从 IdP 收到的 AuthnResponse(签名)。
  • 传入断言使用 SHA-1 进行签名和哈希处理(DigestMethod 设置为 SHA-1,SignatureMethod 设置为 SHA-1)
  • 具有证书的传入断言已使用 SHA-1 进行签名
  • 传出断言使用 SHA-1 进行哈希处理和签名(DigestMethod 设置为 SHA-1,SignatureMethod 设置为 SHA-1)
  • 具有已签名证书的传出断言已使用 SHA-1 进行签名

注意:tsm SAML 配置实体 wgserver.saml.sha256 仍是有效的配置密钥,确保 Tableau Server 发送的所有传出断言都使用 SHA-256 进行签名。这可与阻止列表密钥配合使用,支持 idP 可能需要 SHA-256 签名断言的配置,但传入断言或上传的证书使用 SHA-1 进行签名。现在,此密钥的默认值将为真;这样,所有传出 SAML 断言将默认使用 SHA-256 进行签名。

注意:对于限制证书属性的设置,这些设置在 Tableau Server 2021.1 中可用,但默认未启用;但如果更改 wgserver.saml.blocklisted_digest_algorithms 的设置,2021.1 可能会出现这些问题
wgserver.saml.min_allowed.rsa_key_size or wg.server.saml.min.elliptic_curve_size.
此文章是否已解决问题?