适用于:✔️ Linux VM
本文讨论 Red Hat 更新基础结构(RHUI)中由过期或缺少传输层安全性(TLS)或安全套接字层(SSL)证书引起的常见问题。
先决条件
通过 SSH 访问 Azure 中相应的 Red Hat Enterprise Linux (RHEL) 即用即付(PAYG)虚拟机(VM)
根特权
重要
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 地址。
备注
从 2024 年 6 月 30 日开始,RHEL 7 将终止维护支持 2 阶段。 此维护阶段之后是延长生命周期的阶段。 当 RHEL 7 从完整维护阶段过渡时,客户应升级到 RHEL 8 或 9。 如果你的组织必须保留在 RHEL 7 上,我们建议你安装 Red Hat Enterprise Linux 扩展生命周期支持(ELS)加载项。 有关详细信息,请参阅 扩展生命周期支持
原因 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来运行:
验证是否已
rhui-azure安装 (EUS或non-EUSSAP/E4S) 包。 为此,请运行以下命令:sudo rpm -qa | grep -i azurerhui-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 映像 验证证书是否存在:
sudo ls -l /etc/pki/rhui/product/备注
在此方案中,你发现文件缺失。
通过运行以下命令
rhui-azure重新安装相应的yum reinstall包:sudo yum reinstall $(rpm -qa | grep -i rhui-azure) --disablerepo=* --enablerepo="*microsoft-azure*"EUS如果安装了或E4S存储库,请releasever锁定变量:sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/yum/vars/releasever再次运行
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以下命令来运行以下命令。
使用下表根据 RHEL 版本和映像类型确定正确的 RHUI 包类型:
| 映像类型 | 支持模型 | 适用的版本 | RHUI 包前缀 | 使用 releasever? |
|---|---|---|---|---|
| 泛型 RHEL | 非欧盟 | 7.9, 8.10, 9.8, 10.0 | rhui-azure-rhelX |
否 |
| 泛型 RHEL | EUS | 8.6, 8.8, 9.2, 9.4, 9.6 | rhui-azure-rhelX-eus |
是的 |
| RHEL-SAP-APPS | EUS | 8.6, 8.8, 9.2, 9.4, 9.6 | rhui-azure-rhelX-sapapps |
是的 |
| RHEL-SAP-APPS | 基本(没有可用的 EUS) | 7.9, 8.10 | rhui-azure-rhelX-base-sap-apps |
否 |
| RHEL-SAP-HA | E4S | 8.6, 8.8, 9.2, 9.4, 9.6 | rhui-azure-rhelX-sap-ha |
是的 |
| RHEL-SAP-HA | 基本(无 E4S 可用) | 7.9, 8.10 | rhui-azure-rhelX-base-sap-ha |
否 |
| RHEL-HA | EUS | 8.6, 8.8, 9.4, 9.6 | rhui-azure-rhelX-ha |
是的 |
| RHEL-HA | 基本(没有可用的 EUS) | 7.9, 8.10 | rhui-azure-rhelX-base-ha |
否 |
备注
- 文档中对 8.x 或 9.x 的引用指示 EUS 或 E4S 下支持的次要版本,具体取决于映像类型。
- 对于在 RHEL 7.9 或 8.10 上运行的 SAP 工作负荷,其中 EUS 或 E4S 不可用,RHUI 客户端使用前缀为
base-(例如,rhui-azure-rhel8-base-sap-apps) 的包。 - 有关完整的支持时间线,请参阅 Red Hat Enterprise Linux (RHEL) 扩展更新支持 (EUS) 概述。
RHUI 包安装索引
使用以下索引直接导航到相应的部分:
- EUS RHUI 程序包安装
- 非EUS RHUI软件包安装
- RHEL 7 SAP RHUI 包安装
- RHEL 8 SAP/E4S/HA RHUI 包安装
- RHEL 9 SAP/E4S/HA RHUI 包安装
EUS RHUI 程序包安装
选择 EUS 图像类型的选项卡以查看相应的说明。
使用此命令创建配置文件。
sudo tee rhel8-eus.config > /dev/null <<< $'[rhui-microsoft-azure-rhel8-eus]\nname=Microsoft Azure RPMs for RHEL 8 EUS\nbaseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel8-eus\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc\nsslverify=1'运行以下命令以安装
rhui-azure-rhel8-eus包:sudo dnf --config rhel8-eus.config install rhui-azure-rhel8-eusreleasever锁定变量:sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/dnf/vars/releasever验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
dnf repolist:sudo dnf repolist all删除在步骤 1 上创建的临时文件。
sudo rhel8-eus.config
备注
如果在 /etc/yum.conf 或 /etc/dnf.conf 中使用代理,该yum --config rhelX-XX-XX.config命令将不起作用,因为它不包括代理设置。 在这种情况下,将临时文件 rhelX-XX-XX.config 直接移动到 /etc/yum.repos.d/ 中作为 .repo
sudo mv rhelX-XX-XX.config /etc/yum.repos.d/ms.repo
sudo yum install rhui-azure-rhel-X-X-X
sudo rm rhelX-XX-XX.config
根据需要替换 rhelX-XX-XX.config 和 rhui-azure-rhel-X-X-X 替换为实际值。
非 EUS RHUI 包安装
选择非 EUS 图像类型的选项卡以查看相应的说明。
如果存在,请删除 releasever 文件。
sudo rm /etc/yum/vars/releasever使用以下命令创建配置文件:
sudo tee rhel7-non-eus.config > /dev/null <<< $'[rhui-microsoft-azure-rhel7]\nname=Microsoft Azure RPMs for Red Hat Enterprise Linux 7 (rhel7)\nbaseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel7\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc\nsslverify=1'rhui-azure-rhel7通过运行以下命令yum install安装包:sudo yum --config rhel7-non-eus.config install rhui-azure-rhel7验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
yum repolist:sudo yum repolist删除在步骤 2 上创建的临时文件。
sudo rm rhel7-non-eus.config
备注
如果在 /etc/yum.conf 或 /etc/dnf.conf 中使用代理,该yum --config rhelX-XX-XX.config命令将不起作用,因为它不包括代理设置。 在这种情况下,将临时文件 rhelX-XX-XX.config 直接移动到 /etc/yum.repos.d/ 中作为 .repo
sudo mv rhelX-XX-XX.config /etc/yum.repos.d/ms.repo
sudo yum install rhui-azure-rhel-X-X-X
sudo rm rhelX-XX-XX.config
根据需要替换 rhelX-XX-XX.config 和 rhui-azure-rhel-X-X-X 替换为实际值。
RHEL 7 SAP RHUI 包安装
选择 SAP 映像类型的选项卡以查看相应的说明。
如果 OS 版本为 RHEL 7.9 ,并且 VM 是使用 RHEL-SAP-APPS 产品/服务映像创建的,则以下步骤适用。
如果存在,请删除 releasever 文件。
sudo rm /etc/yum/vars/releasever使用以下命令创建配置文件:
sudo tee rhel7-base-sap-apps.config > /dev/null <<< $'[rhui-microsoft-azure-rhel7-base-sap-apps]\nname=Microsoft Azure RPMs for Red Hat Enterprise Linux 7 (rhel7-base-sap-apps)\nbaseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel7-base-sap-apps\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc\nsslverify=1'rhui-azure-rhel7-base-sap-apps通过运行以下命令yum install安装包:sudo yum --config rhel7-base-sap-apps.config install rhui-azure-rhel7-base-sap-apps验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
yum repolist:sudo yum repolist删除在步骤 2 上创建的临时文件。
sudo rm rhel7-base-sap-apps.config
备注
如果在 /etc/yum.conf 或 /etc/dnf.conf 中使用代理,该yum --config rhelX-XX-XX.config命令将不起作用,因为它不包括代理设置。 在这种情况下,将临时文件 rhelX-XX-XX.config 直接移动到 /etc/yum.repos.d/ 中作为 .repo
sudo mv rhelX-XX-XX.config /etc/yum.repos.d/ms.repo
sudo yum install rhui-azure-rhel-X-X-X
sudo rm rhelX-XX-XX.config
根据需要替换 rhelX-XX-XX.config 和 rhui-azure-rhel-X-X-X 替换为实际值。
RHEL 8 SAP/E4S/HA RHUI 包安装
选择 SAP 映像类型的选项卡以查看相应的说明。
- RHEL 8.x - RHEL-SAP-APPS
- RHEL 8.10 - RHEL-SAP-APPS (BASE)
- RHEL 8.x - RHEL-SAP-HA (E4S)
- RHEL 8.10 - RHEL-SAP-HA (BASE)
- RHEL 8.x - RHEL-HA
- RHEL 8.10 - RHEL-HA (BASE)
如果 OS 版本,并且 VM 是使用RHEL 8.X产品/服务映像创建的,则以下步骤适用。
使用以下命令创建配置文件:
sudo tee rhel8-sapapps.config > /dev/null <<< $'[rhui-microsoft-azure-rhel8-sapapps]\nname=Microsoft Azure RPMs for Red Hat Enterprise Linux 8 (rhel8-base-sapapps)\nbaseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel8-sapapps\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc\nsslverify=1'rhui-azure-rhel8-sapapps通过运行 dnf 安装命令安装包:sudo dnf --config rhel8-sapapps.config install rhui-azure-rhel8-sapappsreleasever锁定变量:sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/dnf/vars/releasever验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
dnf repolist:sudo dnf repolist删除在步骤 1 上创建的临时文件。
sudo rm rhel8-sapapps.config
备注
如果在 /etc/yum.conf 或 /etc/dnf.conf 中使用代理,该yum --config rhelX-XX-XX.config命令将不起作用,因为它不包括代理设置。 在这种情况下,将临时文件 rhelX-XX-XX.config 直接移动到 /etc/yum.repos.d/ 中作为 .repo
sudo mv rhelX-XX-XX.config /etc/yum.repos.d/ms.repo
sudo yum install rhui-azure-rhel-X-X-X
sudo rm rhelX-XX-XX.config
根据需要替换 rhelX-XX-XX.config 和 rhui-azure-rhel-X-X-X 替换为实际值。
RHEL 9 SAP/E4S/HA RHUI 包安装
选择 SAP 映像类型的选项卡以查看相应的说明。
如果 OS 版本,并且 VM 是使用RHEL 9.0产品/服务映像创建的,则以下步骤适用。
使用以下命令创建配置文件:
sudo tee rhel9-sapapps.config > /dev/null <<< $'[rhui-microsoft-azure-rhel9-sapapps]\nname=Microsoft Azure RPMs for Red Hat Enterprise Linux 9 (rhel9-sapapps)\nbaseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel9-sapapps\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc\nsslverify=1'rhui-azure-rhel9-sapapps通过运行以下命令dnf install安装包:sudo dnf --config rhel9-sapapps.config install rhui-azure-rhel9-sapappsreleasever锁定级别。 目前,版本必须为 9.2 或 9.4。sudo sh -c 'echo 9.4 > /etc/dnf/vars/releasever'验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
yum repolist:sudo dnf repolist all删除在步骤 1 上创建的临时文件。
sudo rm rhel9-sapapps.config
备注
如果在 /etc/yum.conf 或 /etc/dnf.conf 中使用代理,该yum --config rhelX-XX-XX.config命令将不起作用,因为它不包括代理设置。 在这种情况下,将临时文件 rhelX-XX-XX.config 直接移动到 /etc/yum.repos.d/ 中作为 .repo
sudo mv rhelX-XX-XX.config /etc/yum.repos.d/ms.repo
sudo yum install rhui-azure-rhel-X-X-X
sudo rm rhelX-XX-XX.config
根据需要替换 rhelX-XX-XX.config 和 rhui-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 证书包
从另一个具有存储库访问权限的 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。
将
ca-certificate包复制到受影响的 VM 后,更新、安装或重新安装该包:检查包是否已安装:
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=*
若要重新生成或更新相应的证书,请运行 update-ca-trust 命令:
sudo update-ca-trust
原因 5:RHEL 版本 8、9 或 10 中的验证错误(“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 更改为 FUTURE 或 CUSTOM。 该 FUTURE 策略禁用某些使用 2,048 位的算法,例如 SHA-1、RSA 和 Diffie-Hellman。 该 CUSTOM 策略还可能禁用这些算法。 若要标识当前策略设置模式,请运行以下 update-crypto-policies 命令:
sudo update-crypto-policies --show
DEFAULT:FUTURE
解决方案 5:还原到默认加密系统策略
按照以下步骤将加密还原到 DEFAULT 系统策略设置:
通过运行以下命令
DEFAULT将系统策略设置更改回update-crypto-policies:sudo update-crypto-policies --set DEFAULT再次运行
update-crypto-policies命令,验证策略更改是否已完成:sudo update-crypto-policies --show测试以确保错误已修复。 为此,请运行以下命令
dnf install:sudo dnf install <package-name>
有关加密策略的详细信息,请参阅 RHEL 8 中的强加密默认值和已弃用的弱加密算法。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。
联系我们寻求帮助
如果有疑问,可以询问 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。