vCert
and fixcerts.py
based on your operational needs, certificate types, and available features. Both tools are robust and reliable; in many scenarios, using them in combination increases flexibility and success rate.
Resilience advantage: If one tool encounters a limitation or fails to address a specific certificate type, you can seamlessly switch to the other. This āfailover between toolsā is a deliberate part of these proceduresāensuring certificate renewal remains possible no matter the situation.
š Note: An invaluable feature of
fixcerts.py
is its ability to specify an extended validity period for renewed certificates (--validityDays <DAYS>
).
However, the actual validity of generated certificates cannot exceed the expiry of the vCSA root CAāeven if a longer value is specified, certificates will expire at the root CAās end date.
š Note: Some certificate types (notably STS certificates) are not fully covered by either tool. It is recommended to have
vCert
availableāeven if your main tool isfixcerts.py
! For example, STS certificates are not visible via VECS CLI orfixcerts.py
, and requirevCert
or equivalent tools for inspection and renewal.
vCert.py
/fixcerts.py
on a SSH
session with a terminal software, e.g., PuTTY
or OS standard ssh
. for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not Before" -ie "Not After"; done
You can find this as a separate script file,
list-vecs-certs.sh
, for ease of use.
vCert.py
:
./vCert.py --run config/view_cert/op_view_11-sts.yaml
./vCert.py --run config/check_cert/op_check_10-vc_ext_thumbprints.yaml
š Note: Because the STS certificates and Extension Thumbprints are not visible via VECS CLI or
fixcerts.py
, it is necessary to havevCert.py
availableāeven if your main tool isfixcerts.py
! The second check is included in ā1. Check current certificate statusā main menu or an invocation with āārun config/op_check_cert.yamlā option.
service-control --status --all
/var/log/vmware/vmcad/
Mainly:
Optionally:
/var/log/vmware/sso/
Mainly:
Optionally:
/storage/log
df -h
or
df -h /storage/log
ā ļø Warning:
If the/var/log/vmware
directory (or its backing/storage/log
partition) is nearly full or out of space, certificate management operations may fail or cause vCSA services to become unavailable or unstable.
Ensure there is sufficient free space before proceeding.
If space is low, consult vCenter log disk exhaustion or /storage/log full for diagnostic and cleanup guidance before attempting any certificate changes.
After completing certificate renewal procedures, it is essential to verify the health and status of the vCenter Server and its certificates.
vCert.py
to confirm that all renewed certificates have the correct expiry dates and consistency.service-control --status --all
/var/log/vmware/vmcad/
and /var/log/vmware/sso/
for any errors or warnings.vCert.py
is primarily designed for use via its interactive menu. While it does support direct operations with the --run
option by specifying the path to a particular YAML file, this usually requires more typing, and the other command-line options are quite limited.
However, depending on the situation, using the --run
option for specific operations can be beneficial. For your convenience, the table vCert.py direct operation arguments in the separate file vcsa-cert-list-chart.md
summarizes the available YAML file paths for each operation category.
Run vCert.py:
Start by just ./vCert.py
. If you pass --user <user@vphere> --password <pswd>
, authentication prior to each authoritative operation is omitted.
Check current certificate status:
In the main menu, select ā1. Check current certificate statusā and proceed.
Try full-auto renewal first:
Choose ā6. Reset all certificates with VMCA-signed certificatesā in the main menu and proceed.
Service restart prompt:
Answer āNā (default) to āRestart VMware services [N]: ā prompt, if succeeded or failed.
/var/log/vmware/vmcad/
and /var/log/vmware/vmware/sso/
for signs of certificate renewal problems.The script will create
/var/log/vmware/vCert/vCert.log
(which will be included in a support bundle), and a directory in/root/vCert-master
with the name format āYYYYMMDDā, which will include several sub-directories for staging, backups, etc. Other than certificate backup files, the temporary files are deleted when the vCert tool exits.
for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not Before" -ie "Not After"; done
Refer to the chart vCert.py Operation for each certificate in the separate file
vcsa-cert-list-chart.md
for correct menu entries.
./vCert.py --run config/manage_cert/op_manage-vc-ext-thumbprints.yaml
). If any MISMATCH are found, proceed with āYā to solve.š” Tips:
fixcerts.py
has occasionally been reported to have stability issues, where renewal may succeed for some certificate types but not others. However, in practice, it has proven to be reliable in many cases. To further reduce the possibility of renewal failures, it is recommended to perform staged renewals by certificate type rather than renewing all at once. Always use the latest version (fixcerts_3_2.py
at the time of writing).
./fixcerts.py replace --certType machinessl --validityDays 3650 --serviceRestart False
Key Points:
--certType
argument for each run to match the certificate-type.vcsa-cert-list-chart.md
for correct values (e.g. machinessl
, solutionusers
, etc.).--validityDays
option to extend certificate validity, if desired.--serviceRestart False
for each run. You will restart services after all renewals are complete.--debug
option to increase verbosity and aid troubleshooting.fixcerts.py
does not provide an interactive menu; all operations are done via command-line arguments.for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not Before" -ie "Not After"; done
./vCert.py --run config/view_cert/op_view_11-sts.yaml
/var/log/vmware/vmcad/
/var/log/vmware/vmware/sso/
fixcerts.py
ās own log file:
fixcerts.log
(found in the current working directory where the script was executed).fixcerts.py
for that type.--debug
option for more detailed error output.vecs-cli
or consult official product support documentation../vCert.py --run config/manage_cert/op_manage-vc-ext-thumbprints.yaml
If any MISMATCH are found, proceed with āYā to solve.
service-control --stop --all && service-control --start --all
This is the recommended and safe method to restart services, as used internally by
fixcerts.py
itself.
š” Tips:
fixcerts.log
, after each major operation for hidden errors.--debug
option for more detailed troubleshooting if issues arise.