排查 Azure 中的 RHUI 证书问题
适用于:✔️ 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 地址。
原因 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-EUS
SAP/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 映像 验证证书是否存在:
sudo ls -l /etc/pki/rhui/product/
备注
在此方案中,你发现文件缺失。
通过运行以下命令
yum reinstall
重新安装相应的rhui-azure
包: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
以下命令来运行以下命令。
EUS RHUI 程序包安装
使用
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'
releasever
锁定变量:sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/yum/vars/releasever
验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
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-X
和rhui-azure-rhel-X-X-X
替换为实际值。
非 EUS RHUI 包安装
如果存在,请删除 releasever 文件。
sudo rm /etc/yum/vars/releasever
rhui-azure-rhel7
通过运行以下命令yum install
安装包:sudo yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-microsoft-azure-rhel7.config' install 'rhui-azure-rhel7'
验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
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-X
和 rhui-azure-rhel-X-X-X
替换为实际值。
RHEL 7 SAP/E4S/HANA RHUI 包安装
选择 SAP 映像类型的选项卡以查看相应的说明。
- RHEL 7.x - RHEL-SAP-APPS
- RHEL 7.9 - RHEL-SAP-APPS
- RHEL 7.x - RHEL-SAP (旧产品/服务)
- RHEL 7.x - RHEL-SAP-HA (E4S)
- RHEL 7.9 - RHEL-SAP-HA
如果 OS 版本 低于 RHEL 7.9 ,并且 VM 是使用 RHEL-SAP-APPS
产品/服务映像创建的,则以下步骤适用。
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
releasever
锁定变量:sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/yum/vars/releasever
验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
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-X
和 rhui-azure-rhel-X-X-X
替换为实际值。
RHEL 8 SAP/E4S/HANA RHUI 包安装
选择 SAP 映像类型的选项卡以查看相应的说明。
- RHEL 8.x - RHEL-SAP-APPS
- RHEL 8.10 - RHEL-SAP-APPS
- RHEL 8.x - RHEL-SAP-HA (E4S)
- RHEL 8.10 - RHEL-SAP-HA
- RHEL 8.x - RHEL-HA (E4S)
- RHEL 8.10 - RHEL-HA
如果 OS 版本低于 SAP RHEL 8.X
支持的最新版本,并且 VM 是使用RHEL-SAP-APPS
产品/服务映像创建的,则以下步骤适用。
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
releasever
锁定变量:sudo echo $(. /etc/os-release && echo $VERSION_ID) > /etc/dnf/vars/releasever
验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
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-X
和 rhui-azure-rhel-X-X-X
替换为实际值。
RHEL 9 SAP/HANA RHUI 包安装
选择 SAP 映像类型的选项卡以查看相应的说明。
如果 OS 版本低于 SAP RHEL 9.0
支持的最新版本,并且 VM 是使用RHEL-SAP-APPS
产品/服务映像创建的,则以下步骤适用。
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
releasever
锁定级别。 目前,版本必须为 9.0 或 9.2。sudo sh -c 'echo 9.2 > /etc/dnf/vars/releasever'
验证相应的存储库是否可用,并且不显示任何错误。 为此,请运行以下命令
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-X
和 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 中的验证错误(“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
系统策略设置:
通过运行以下命令
update-crypto-policies
将系统策略设置更改回DEFAULT
: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 反馈社区。