針對 Azure 中的 RHUI 憑證問題進行疑難解答
適用於:✔️ Linux VM
本文討論 Red Hat Update Infrastructure (RHUI) 中由過期或遺失傳輸層安全性 (TLS) 或安全套接字層 (SSL) 憑證所造成的常見問題。
必要條件
在 Azure 中對對應的 Red Hat Enterprise Linux (RHEL) 隨用隨付 (PAYG) 虛擬機 (VM) 的 SSH 存取
根許可權
重要
RHUI 僅適用於隨用隨付映像。 您是否改用自訂或黃金映像 (也稱為「自備訂閱 (BYOS)」)? 在此情況下,系統必須附加至 Red Hat 訂閱管理員 (RHSM) 或 Satellite,才能接收更新。 如需其他資訊,請參閱如何使用 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)for repository:_...請確認其路徑,然後再試一次」
您必須套用程式,以避免在憑證到期日之前建立的舊映射或映射中到期。
解決方案 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/ 目錄中遺漏憑證。
如果 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 中使用 Proxy,命令將無法運作,yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X
因為它不包含 Proxy 設定。 在此情況下,請使用下列命令:
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-azure-rhel-X-X-X
取代rhui-microsoft-azure-rhelX-X-X-X
為實際值。
非 EUS RHUI 套件安裝
如果存在,請移除 releasever 檔案。
sudo rm /etc/yum/vars/releasever
執行
yum install
命令來rhui-azure-rhel7
安裝套件: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 中使用 Proxy,命令將無法運作,yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X
因為它不包含 Proxy 設定。 在此情況下,請使用下列命令:
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-azure-rhel-X-X-X
取代rhui-microsoft-azure-rhelX-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
供應專案映像所建立,則下列步驟適用。
執行
yum install
命令來rhui-azure-rhel7-sapapps
安裝套件: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 中使用 Proxy,命令將無法運作,yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X
因為它不包含 Proxy 設定。 在此情況下,請使用下列命令:
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-azure-rhel-X-X-X
取代rhui-microsoft-azure-rhelX-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 中使用 Proxy,命令將無法運作,yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X
因為它不包含 Proxy 設定。 在此情況下,請使用下列命令:
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-azure-rhel-X-X-X
取代rhui-microsoft-azure-rhelX-X-X-X
為實際值。
RHEL 9 SAP/HANA RHUI 套件安裝
選取 SAP 映射類型的索引標籤,以查看對應的指示。
如果 OS 版本早於 SAP 支援的RHEL 9.0
最新版本,以及 VM 是使用RHEL-SAP-APPS
供應專案映像所建立,則下列步驟適用。
執行
dnf install
命令來rhui-azure-rhel9-sapapps
安裝套件: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 中使用 Proxy,命令將無法運作,yum --config='https://rhelimage.blob.core.windows.net/repositories/rhui-x-x-x-x install rhui-azure-rhel-X-X-X
因為它不包含 Proxy 設定。 在此情況下,請使用下列命令:
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-azure-rhel-X-X-X
取代rhui-microsoft-azure-rhelX-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 憑證套件
從另一個具有存放庫存取權和相同 Red Hat 版本和版本的 VM 下載最新的 ca-certificates-XXXX.X.XX-XX.elX_X.noarch.rpm 套件。 然後,將套件複製到受影響的 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.XX-XX.elX_X.noarch.rpm。
將套件複製到受影響的 VM 之後,更新、安裝或重新安裝
ca-certificate
套件:檢查是否已安裝套件:
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
系統原則設定:
執行命令,將系統原則設定變更回 :
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 community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。