Centos

無法在 oVirt 上找到請求目標的有效認證路徑

  • April 16, 2019

我昨天安裝了最新的 CentOS 7。乾淨安裝。我遵循本教程: https ://www.ovirt.org/documentation/install-guide/chap-Installing_oVirt.html

唯一不同的是我為 http 配置了 httpd listen 1080,為 https 配置了 1443。因為我之前安裝了nginx。如果主機名正確,我將 nginx 重定向 443 配置為 1443 埠。

但在“連接到管理門戶”步驟中,出現錯誤:

sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

https://i.imgur.com/bnTwTDK.png

我嘗試了很多解決方案,但沒有一個有效。

嘗試解決方案_1:

cat /etc/ovirt-engine/engine.conf.d/99-custom-truststore.conf
ENGINE_HTTPS_PKI_TRUST_STORE="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts"
ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD="changeit"

https://i.imgur.com/uAbJmfn.png 不起作用。

嘗試解決方案_2:

手動將證書添加到密鑰庫:

for f in *.pem;  do keytool -import -trustcacerts -keystore /etc/pki/java/cacerts -storepass changeit -alias "$f" -import -file "$f"; done
for f in *.cer;  do keytool -import -trustcacerts -keystore /etc/pki/java/cacerts -storepass changeit -alias "$f" -import -file "$f"; done
for f in *.der;  do keytool -import -trustcacerts -keystore /etc/pki/java/cacerts -storepass changeit -alias "$f" -import -file "$f"; done
#/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts is linked to /etc/pki/java/cacerts

我在 /etc/pki/ovirt-engine/ 下的任何地方都執行此腳本,但它仍然無法正常工作。

https://i.imgur.com/ZME9n6q.png

我使用 oVirt 進行了全新安裝並安裝了我自己的證書,無論如何我遇到了與您相同的錯誤並設法以這種方式解決它。

重要的是要說您在此命令中看到的文件,我假設您像 oVirt 文件中的附錄 D 一樣創建了它們。

在附錄末尾,在重新啟動服務之前,執行以下命令:

keytool -import -trustcacerts -keystore /etc/pki/java/cacerts -storepass changeit -alias "$YOURALIAS" -import -file "/tmp/apache.cer"

請注意,“-storepass”是預設設置,顯然如果您有密碼,您應該輸入自己的商店密碼。

然後重新啟動服務,它對我有用。

編輯:

如果您要使用商業證書,請確保您有以下文件,其附錄名稱如下:

  • /tmp/3rd-party-ca-cert.pem -> CA 和 CA 根
  • /tmp/apache.p12 -> 證書和私鑰
  • /tmp/apache.cer -> 僅證書
  • /tmp/apache.key -> 僅私鑰

並仔細檢查與您的 CA 證書匹配的 CA 和 CA Root,如下所示:

Certificate chain
0 s:/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.MYDOMAIN.com
  i:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA

1 s:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA
  i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority

2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
  i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority

請注意,在“i:”欄位(頒發者欄位)中,CN(通用名稱)匹配下一個證書,如果不是這樣,請檢查文件“/tmp/3rd-party-ca-cert.pem “並得到正確的。

我不知道您使用的是哪種解決方案,因為它可用於外部和內部 websocket 連接。

引用自:https://serverfault.com/questions/946690