The signing key used for every published VKR expired on January 3, 2026. These can no longer be synced to or uploaded to content libraries that are configured to enforce certificate validity, i.e., have a Security Policy enabled. Content libraries that do not have a security policy enforced will not be affected.
In /var/log/vmware/content-library/cls.log on the vCenter, we see similar errors.
[timestamp] | DEBUG | null | type-adapter-2 | CertUtils | primaryCert certificate has expired on 1/3/26 10:17 PM[timestamp] | DEBUG | null | type-adapter-2 | CertUtils | primaryCert certificate is expired: -----BEGIN CERTIFICATE-------------------------------------------------------------END CERTIFICATE-----[timestamp] | ERROR | null | type-adapter-2 | ManifestCertServiceImpl | Certificate photon-ova.cert validation failed. Error: [CERTIFICATE_EXPIRED][timestamp] | WARN | null | type-adapter-2 | CertValidateResult | CertValidateResult - getResult called - certErrs existed
This issue is caused by the expiration of the signing key
Broadcom Engineering team is aware of this issue and is working on a permanent fix involving reprovisioning signing keys that are valid.
Implement one of the following workarounds:
Workaround 1 (Preferred):
Edit the existing Content Library and uncheck "Apply Security Policy"
Workaround 2:
Get CL ID(s) of the content libraries subscribed to CDN:
kubectl get contentlibraries.imageregistry.vmware.com -A -o json | jq -r '.items[] | select(.status.subscriptionInfo.URL == "https://wp-content.vmware.com/v2/latest/lib.json" or .status.subscriptionInfo.URL == "https://wp-content.broadcom.com/v2/latest/lib.json") | .metadata.name'
For each content library found in above command, run below command:
kubectl get cclitem -o json | jq -r '.items[] | select(.status.contentLibraryRef.name == "example-CL-ID") | .metadata.name' | xargs kubectl delete cclitem
Note: Replace example-CL-ID with the output from the previous command.
Delete the imageregistry pods on the Supervisor namespace with the below command:
kubectl get pods -n vmware-system-imageregistry --no-headers | awk '{print $1}' | xargs kubectl delete pod -n vmware-system-imageregistry