針對 Azure 中的 RHUI 憑證問題進行疑難解答
本文討論 Red Hat 更新基礎結構 (RHUI) 中由 TLS) 或安全套接字層 (SSL) 憑證過期或遺失傳輸層安全性 (所造成的常見問題。
必要條件
SSH 存取對應 的 Red Hat Enterprise Linux (RHEL) 隨用隨付 (PAYG) 虛擬機 (Azure 中的 VM) 。
根許可權。
重要事項
RHUI 僅適用於隨用隨付影像。 您使用自定義或黃金映像 (也稱為「自備訂用帳戶 (BYOS) 」) ? 在此情況下,系統必須附加至 Red Hat 訂用帳戶管理員 (RHSM) 或 Satellite,才能接收更新。 如需詳細資訊,請 參閱如何使用 RHSM 註冊 RHEL 系統並訂閱 Red Hat 客戶入口網站。
注意事項
- 從 2023 年 10 月 12 日開始,所有隨用隨付 (PAYG) 用戶端都已分階段導向至 Red Hat Update Infrastructure (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 套件。 此套件具有更新的憑證。 執行 yum 命令以更新 RHUI 套件:
sudo yum update -y --disablerepo='*' --enablerepo='*microsoft*'
此 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/
注意事項
在此案例中,您會發現檔案遺失。
執行 命令以重新安裝對應
rhui-azure
的yum reinstall
套件:sudo yum reinstall $(rpm -qa | grep -i rhui-azure) --disablerepo=* --enablerepo="*microsoft*"
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-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 中使用 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-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
如果操作系統版本 早於 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 中使用 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-microsoft-azure-rhelX-X-X-X
與 rhui-azure-rhel-X-X-X
。
RHEL 8 SAP/E4S/HANA RHUI 套件安裝
選取 SAP 映射類型的索引標籤,以查看對應的指示。
如果 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-microsoft-azure-rhelX-X-X-X
與 rhui-azure-rhel-X-X-X
。
RHEL 9 SAP/HANA RHUI 套件安裝
選取 SAP 映射類型的索引標籤,以查看對應的指示。
如果操作系統版本 早於 SAP for 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'
確認對應的存放庫可供使用,且未顯示任何錯誤。 若要這樣做,請執行
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-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 憑證套件
從另一個具有存放庫存取權和相同 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
原則會停用一些使用 2048 位的演算法,例如 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 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應