If the vCenter root certificate is not published to the SDDC Manager truststores then the subsequent errors could occur.
Similar exception traces can be seen in commonvsvc log.
/var/log/vmware/vcf/commonsvcs/vcf-commonsvcs.log
2023-02-19T03:27:25.116+0000 ERROR [common,52343a2f26ac349f,6b2b] [c.v.v.i.sync.utils.VcSyncManagerUtil,cs-exec-3]
Error connecting to vCenter vcenter-1, with exception {} com.vmware.vim.vmomi.client.exception.SslException:
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target at com.vmware.vim.vmomi.client.common.impl.ResponseImpl.setError(ResponseImpl.java:250)
at com.vmware.vim.vmomi.client.http.impl.HttpExchange.run(HttpExchange.java:51)
Scripted process:
Upload the attached script VcRootCaSync.py to the SDDC Manager, and run the script as root user:
python VcRootCaSync.py
SSH into the vCenter server and get the root certificate
/usr/lib/vmware-vmca/bin/certool --getrootca --cert=/tmp/root.cer
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store trusted_roots
vi /tmp/root.cer
pass=$(cat /etc/vmware/vcf/commonsvcs/trusted_certificates.key)
keytool -importcert -alias <aliasname> -file <certificate file> -keystore /etc/vmware/vcf/commonsvcs/trusted_certificates.store -storepass <trust store key>
example:
keytool -importcert -alias new_mgmt_root -file /tmp/root.cer -keystore /etc/vmware/vcf/commonsvcs/trusted_certificates.store -storepass $pass
keytool -importcert -alias <aliasname> -file <certificate file> -keystore /etc/alternatives/jre/lib/security/cacerts --storepass changeit
example:
keytool -importcert -alias new_mgmt_root -file /tmp/root.cer -keystore /etc/alternatives/jre/lib/security/cacerts --storepass changeit
keytool -list -v -keystore /etc/vmware/vcf/commonsvcs/trusted_certificates.store -storepass $pass | less
curl -X POST localhost/appliancemanager/trustedCertificates/refresh
Workaround:
If the SDDC UI is accessible you can also import the root certificate from API Explorer.
awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' /tmp/vmca.crt
For example:
root@vcenter-1 [ ~ ]# awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' /tmp/vmca.crt
-----BEGIN CERTIFICATE-----
<certicate..............>
-----END CERTIFICATE-----\n
API Explorer > APIs for managing Trusted Certificates > POST