排查 Azure 中的 RHUI 证书问题

适用于:✔️ Linux VM

本文讨论 Red Hat 更新基础结构(RHUI)中由过期或缺少传输层安全性(TLS)或安全套接字层(SSL)证书引起的常见问题。

先决条件

重要

RHUI 仅适用于即用即付 (PAYG) 映像。 使用自定义映像还是黄金映像(也称为“自带订阅 (BYOS)”)? 在这种情况下,系统必须附加到 Red Hat 订阅管理器(RHSM)或卫星,才能接收更新。 有关详细信息,请参阅如何使用 RHSM 向 Red Hat 客户门户注册和订阅 RHEL 系统

备注

  • 从 2023 年 10 月 12 日开始,所有即用即付(PAYG)客户端都分阶段定向到 RHUI-4 IP。 RHUI-3 IP 仍可用于继续更新,但将来将被删除。 为了确保对包和更新的不间断访问,必须更新现有路由和规则,这些路由和规则允许访问 RHUI-3 IP 以包括 RHUI-4 IP 地址。 但是,若要在此过渡期间继续接收更新,请不要删除 RHUI-3 IP。
  • 从 2020 年 1 月开始,新的 Azure 美国政府映像开始使用之前在 Azure 全局标头下提及的公共 IP 地址。

原因 1:RHUI 客户端证书已过期

Azure RHUI 证书通常每两年过期一次。 如果使用较旧的 RHEL VM 映像(如 RHEL 版本 7.4(映像 URN: RedHat:RHEL:7.4:7.4.2018010506),则由于现已过期的 TLS/SSL 客户端证书,你遇到与 RHUI 的连接降级。 例如,你可能会收到以下错误消息之一:

  • “SSL 对等方已将证书拒绝为已过期”

  • “错误:无法检索存储库的存储库元数据(repomd.xml):_...请验证其路径,然后重试”

必须应用一个过程,以避免在证书过期日期之前创建的旧映像或映像中的证书过期。

解决方案 1:更新 RHUI 客户端包

若要访问云环境中即用即付系统上的 RHEL 存储库,请使用 RHUI。 作为云提供商,Azure 可以随时创建和发布更新的客户端配置 RPM 版本,例如用于以下任务:

  • 提供对新存储库的访问权限
  • 续订证书
  • 进行任何其他打包更改

在这种情况下,必须在系统中安装新的 RHUI 包。 此包具有已续订的证书。 若要更新 RHUI 包,请 运行 yum 命令:

sudo yum update -y --disablerepo='*' --enablerepo='*microsoft-azure*'

sudo yum update 命令还可以更新客户端证书包(具体取决于 RHEL 版本)。 即使命令输出包含使用其他存储库时看到的相同 SSL 证书已过期错误,也会进行更新。 如果此更新成功,则应当还原与其他 RHUI 存储库的正常连接,这样才能够再次成功运行 sudo yum update

如果在运行 yum update时收到“404”错误,请尝试运行以下命令来刷新 yum 缓存:

sudo yum clean all
sudo yum makecache

原因 2:缺少 RHUI 证书

Azure Red Hat Linux VM 已安装 RHUI Azure 包。 但是,证书缺少 /etc/pki/rhui/product/ directory。

如果 RHUI 证书错误地从 VM 中删除,则尝试安装或更新包时会显示以下错误消息:

sudo yum install <package-name>
Red Hat Enterprise Linux X for x86_64 - XXXX  0.0  B/s |   0  B     00:00  
Errors during downloading metadata for repository 'rhel-X-for-x86_64-XXXX-eus-rhui-rpms':  
  - Curl error (58): Problem with the local SSL certificate for https://rhui-3.microsoft.com/pulp/repos/content/eus/rhel8/rhui/X.X/x86_64/XXXXX/os/repodata/repomd.xml [could not load PEM client certificate, OpenSSL error error:02001002:system library:fopen:No such file or directory, (no key found, wrong pass phrase, or wrong file format?)]

解决方案 2:重新安装 EUS、非 EUS 或 SAP RHUI 包

重新安装相应的 RHUI 包,以在正确的位置重新生成缺少的证书。

以下步骤中的所有命令都应通过使用根特权或指定 sudo来运行:

  1. 验证是否已rhui-azure安装 (EUSnon-EUSSAP/E4S) 包。 为此,请运行以下命令:

    sudo rpm -qa | grep -i azure
    
    rhui-azure-rhelX-<>-X.X-XXX.noarch
    

    有关扩展更新支持(EUS)或非 EUS RHUI 包的详细信息,请参阅以下文章的链接部分。

    包类型 链接。
    EUS RHUI 包 连接到 EUS 存储库的 Red Hat 映像
    非 EUS RHUI 包 连接到非 EUS 存储库的 Red Hat 映像
    更新 SAP 解决方案订阅服务 (SAP/E4S) RHUI 包 连接到 SAP/E4S 存储库的 Red Hat 映像
  2. 验证证书是否存在:

    sudo ls -l /etc/pki/rhui/product/
    

    备注

    在此方案中,你发现文件缺失。

  3. 通过运行以下命令yum reinstall重新安装相应的rhui-azure包:

    sudo yum reinstall $(rpm -qa | grep -i rhui-azure) --disablerepo=* --enablerepo="*microsoft-azure*"
    
  4. EUS如果安装了或E4S存储库,请releasever锁定变量:

    sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/yum/vars/releasever
    
  5. 再次运行 ls 命令,验证证书是否存在。 现在应列出证书文件:

    sudo ls -l /etc/pki/rhui/product/
    

原因 3:缺少 RHUI 包

Red Hat VM 中缺少 RHUI EUS、非 EUS 或 SAP/E4S 包,但存储库配置文件仍存在于 /etc/yum.repos.d/ 目录中。

尝试安装或更新包时,会收到以下错误消息:

sudo yum install <package-name>  
Red Hat Enterprise Linux X for x86_64 - XXXX  0.0  B/s |   0  B     00:00  
Errors during downloading metadata for repository 'rhel-X-for-x86_64-XXXX-XXX-rhui-rpms':  
  - Curl error (58): Problem with the local SSL certificate for https://rhui-3.microsoft.com/pulp/repos/content/eus/rhel8/rhui/X.X/x86_64/XXXXX/os/repodata/repomd.xml [could not load PEM client certificate, OpenSSL error error:02001002:system library:fopen:No such file or directory, (no key found, wrong pass phrase, or wrong file format?)]

解决方案 3:安装 EUS、非 EUS 或 SAP/E4S RHUI 包

为 EUS、非 EUS 或 SAP/E4S 安装缺少的 RHUI 包。

应使用根权限或通过指定 sudo以下命令来运行以下命令。

EUS RHUI 程序包安装

  1. 使用 yum install 命令来安装 rhui-azure-rhel7-eus 包:

    sudo yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhel7-eus.config' install 'rhui-azure-rhel7-eus'
    
  2. releasever锁定变量:

    sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/yum/vars/releasever
    
  3. 验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令 yum repolist

    sudo yum repolist all
    

备注

如果在 /etc/yum.conf/etc/dnf.conf 中使用代理,该yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X命令将不起作用,因为它不包括代理设置。 在这种情况下,请使用以下命令:

sudo wget https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhelX-X-X-X.config
sudo mv rhui-microsoft-azure-rhelX-X-X-X.config /etc/yum.repos.d
sudo yum install rhui-azure-rhel-X-X-X

根据需要替换 rhui-microsoft-azure-rhelX-X-X-Xrhui-azure-rhel-X-X-X 替换为实际值。

非 EUS RHUI 包安装

  1. 如果存在,请删除 releasever 文件。

    sudo rm /etc/yum/vars/releasever
    
  2. rhui-azure-rhel7通过运行以下命令yum install安装包:

    sudo yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhel7.config' install 'rhui-azure-rhel7'
    
  3. 验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令 yum repolist

    sudo yum repolist all
    

备注

如果在 /etc/yum.conf/etc/dnf.conf 中使用代理,该yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X命令将不起作用,因为它不包括代理设置。 在这种情况下,请使用以下命令:

sudo wget https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhelX-X-X-X.config
sudo mv rhui-microsoft-azure-rhelX-X-X-X.config /etc/yum.repos.d
sudo yum install rhui-azure-rhel-X-X-X

根据需要替换 rhui-microsoft-azure-rhelX-X-X-Xrhui-azure-rhel-X-X-X 替换为实际值。

RHEL 7 SAP/E4S/HANA RHUI 包安装

选择 SAP 映像类型的选项卡以查看相应的说明。

如果 OS 版本 低于 RHEL 7.9 ,并且 VM 是使用 RHEL-SAP-APPS 产品/服务映像创建的,则以下步骤适用。

  1. rhui-azure-rhel7-sapapps通过运行以下命令yum install安装包:

    sudo yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhel7-sapapps.config' install rhui-azure-rhel7-sapapps
    
  2. releasever锁定变量:

    sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/yum/vars/releasever
    
  3. 验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令 yum repolist

    sudo yum repolist all
    

备注

如果在 /etc/yum.conf/etc/dnf.conf 中使用代理,该yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X命令将不起作用,因为它不包括代理设置。 在这种情况下,请使用以下命令:

sudo wget https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhelX-X-X-X.config
sudo mv rhui-microsoft-azure-rhelX-X-X-X.config /etc/yum.repos.d
sudo yum install rhui-azure-rhel-X-X-X

根据需要替换 rhui-microsoft-azure-rhelX-X-X-Xrhui-azure-rhel-X-X-X 替换为实际值。

RHEL 8 SAP/E4S/HANA RHUI 包安装

选择 SAP 映像类型的选项卡以查看相应的说明。

如果 OS 版本低于 SAP RHEL 8.X 支持的最新版本,并且 VM 是使用RHEL-SAP-APPS产品/服务映像创建的,则以下步骤适用。

  1. rhui-azure-rhel8-sapapps通过运行 dnf 安装命令安装包:

    sudo dnf --config='https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhel8-sapapps.config' install rhui-azure-rhel8-sapapps
    
  2. releasever锁定变量:

    sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/dnf/vars/releasever
    
  3. 验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令 dnf repolist

    sudo dnf repolist all
    

备注

如果在 /etc/yum.conf/etc/dnf.conf 中使用代理,该yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X命令将不起作用,因为它不包括代理设置。 在这种情况下,请使用以下命令:

sudo wget https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhelX-X-X-X.config
sudo mv rhui-microsoft-azure-rhelX-X-X-X.config /etc/yum.repos.d
sudo yum install rhui-azure-rhel-X-X-X

根据需要替换 rhui-microsoft-azure-rhelX-X-X-Xrhui-azure-rhel-X-X-X 替换为实际值。

RHEL 9 SAP/HANA RHUI 包安装

选择 SAP 映像类型的选项卡以查看相应的说明。

如果 OS 版本低于 SAP RHEL 9.0支持的最新版本,并且 VM 是使用RHEL-SAP-APPS产品/服务映像创建的,则以下步骤适用。

  1. rhui-azure-rhel9-sapapps通过运行以下命令dnf install安装包:

    sudo dnf --config='https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhel9-sapapps.config' install rhui-azure-rhel9-sapapps
    
  2. releasever锁定级别。 目前,版本必须为 9.0 或 9.2。

    sudo sh -c 'echo 9.2 > /etc/dnf/vars/releasever'
    
  3. 验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令 yum repolist

    sudo dnf repolist all
    

备注

如果在 /etc/yum.conf/etc/dnf.conf 中使用代理,该yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X命令将不起作用,因为它不包括代理设置。 在这种情况下,请使用以下命令:

sudo wget https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhelX-X-X-X.config
sudo mv rhui-microsoft-azure-rhelX-X-X-X.config /etc/yum.repos.d
sudo yum install rhui-azure-rhel-X-X-X

根据需要替换 rhui-microsoft-azure-rhelX-X-X-Xrhui-azure-rhel-X-X-X 替换为实际值。

原因 4:缺少 SSL CA 证书

ca-bundle.crt 证书文件已手动删除、已损坏或已过时。

尝试运行 yum 命令时,可能会收到类似于以下输出的错误消息:

# yum repolist  
Loaded plugins: langpacks, product-id, search-disabled-repos  
rhui-rhel-X-server-dotnet-rhui FAILED  
https://rhui-3.microsoft.com/pulp/repos//content/dist/rhel/rhui/server/X/XServer/x86_64/dotnet/1/os/repodata/70b2edf9a115dffa42d4dd66ba77e77bc3cad45d1143ed02df72ea58c92b59b5-primary.sqlite.bz2: [Errno 14] curl#77 - "Problem with the SSL CA cert (path? access rights?)"
Trying other mirror.

解决方案 4:更新或重新安装 CA 证书包

  1. 从另一个具有存储库访问权限的 VM 下载最新的 ca-certificates-XXXX.X.XX-XX.elX_X.noarch.rpm 包,以及相同的 Red Hat 版本和版本。 然后,将包复制到受影响的 VM:

    sudo yumdownloader ca-certificates
    sudo scp ca-certificates-XXXX.X.XX-XX.elX_X.noarch.rpm <user-name>@<affected-VM-IP-address>:/tmp
    

    备注

    请确保替换相应的用户和 IP 地址占位符。 此外,请确保相应地替换包名称 ca-certificates-XXXX.X.X.XX-XX.elX_X.noarch.rpm

  2. ca-certificate 包复制到受影响的 VM 后,更新、安装或重新安装该包:

    1. 检查包是否已安装:

      sudo rpm -qa | grep "ca-certificates"
      
      • 如果包缺失,请运行以下命令进行 yum install 安装:

        sudo yum install ca-certificates-*.noarch.rpm --disablerepo=*
        
      • 如果包仍已安装,请运行 yum reinstall 命令重新安装包:

        sudo yum reinstall ca-certificates-*.noarch.rpm --disablerepo=*
        
    2. 若要重新生成或更新相应的证书,请运行 update-ca-trust 命令:

      sudo update-ca-trust
      

原因 5:RHEL 版本 8 或 9 中的验证错误(“CA 证书密钥太弱”)

系统尝试连接到包含使用 2048 位 RSA 密钥签名的证书的服务器。 但是,系统具有禁止该加密算法的 FUTURE 策略设置。 /var/log/messages/var/log/dnf.log 文件中显示了以下错误消息:

2023-03-13T19:07:55+0000 DEBUG error: Curl error (60): SSL peer certificate or SSH remote key was not OK for https://rhui4-1.microsoft.com/pulp/repos/content/dist/rhel9/rhui/9/x86_64/supplementary/os/repodata/repomd.xml [SSL certificate problem: CA certificate key too weak] (https://rhui4-1.microsoft.com/pulp/repos/content/dist/rhel9/rhui/9/x86_64/supplementary/os/repodata/repomd.xml).
 - Curl error (58): Problem with the local SSL certificate for https://rhui-2.microsoft.com/pulp/repos/content/e4s/rhel8/rhui/8.4/x86_64/sap/os/repodata/repomd.xml [could not load PEM client certificate, OpenSSL error error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small, (no key found, wrong pass phrase, or wrong file format?)]

默认系统策略设置为 DEFAULT。 在此方案中,默认设置已从 DEFAULT 更改为 FUTURECUSTOM。 该 FUTURE 策略禁用某些使用 2,048 位的算法,例如 SHA-1、RSA 和 Diffie-Hellman。 该 CUSTOM 策略还可能禁用这些算法。 若要标识当前策略设置模式,请运行以下 update-crypto-policies 命令:

sudo update-crypto-policies --show
DEFAULT:FUTURE

解决方案 5:还原到默认加密系统策略

按照以下步骤将加密还原到 DEFAULT 系统策略设置:

  1. 通过运行以下命令update-crypto-policies将系统策略设置更改回DEFAULT

    sudo update-crypto-policies --set DEFAULT
    
  2. 再次运行 update-crypto-policies 命令,验证策略更改是否已完成:

    sudo update-crypto-policies --show
    
  3. 测试以确保错误已修复。 为此,请运行以下命令 dnf install

    sudo dnf install <package-name>
    

有关加密策略的详细信息,请参阅 RHEL 8 中的强加密默认值和已弃用的弱加密算法

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区