无法在 oVirt 上找到请求目标的有效认证路径

无法在 oVirt 上找到请求目标的有效认证路径

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

唯一不同的是,我配置了 httpd 监听 1080 端口用于 http,监听 1443 端口用于 https。因为我之前安装了 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.stack.imgur.com/kXM8U.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.stack.imgur.com/BH8FN.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.stack.imgur.com/wix1N.png

答案1

我已经全新安装了 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 Root 是否与您的 CA 证书匹配,如下所示:

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 连接。

相关内容