This issue requires a certain level of Maestro to troubleshoot, with the version on the OpsMan VM being the preferable one (2.10 uses maestro 8). Earlier versions will not display "signed_by_version" in the output of "topology".
We can see the issue in the following topology output of our test ca. We have trimmed it to show the relevant fields. Make note of the duplicate "signing: true" fields:
maestro topology --name="/test_ca" - name: /test_ca certificate_id: 00000000-0000-0000-0000-000000000000 signed_by: /test_ca versions: A) - version_id: 11111111-1111-1111-1111-111111111111 signing: true <--- Both are signing certificate_authority: true valid_until: 2022-02-22T09:52:01Z <--- The New Certificate B) - version_id: 22222222-2222-2222-2222-222222222222 signing: true <--- Both are signing certificate_authority: true valid_until: 2021-03-13T13:19:41Z <--- The Old Certificate signs: C) - name: /cert_charlie signed_by_version: 22222222-2222-2222-2222-222222222222 deployment_names: - /deployment_charlie D) - name: /cert_delta signed_by_version: 11111111-1111-1111-1111-111111111111 deployment_names: - /deployment_delta E) - name: /cert_echo signed_by_version: 11111111-1111-1111-1111-111111111111 deployment_names: - deployment_echo F) - name: /cert_foxtrot signed_by_version: 11111111-1111-1111-1111-111111111111 deployment_names: - deployment_foxtrot G) - name: /cert_golf signed_by_version: 11111111-1111-1111-1111-111111111111 deployment_names: - deployment_golf H) - name: /cert_hotel signed_by_version: 22222222-2222-2222-2222-222222222222 deployment_names: - deployment_hotel - deployment_quebec
In this circumstance we can see that there are 2 leaf certificates (C & H) being signed by the signing CA B. We need to force those 2 leaf certificates to "regenerate" off of signing CA A. The command "maestro regenerate leaf --name="/cert_hotel" will error as well given that there are two CAs available.
The resolution is to run the following:
maestro regenerate leaf --name="/cert_hotel" --skip-safety-check
By doing this we force it to regenerate off of the defaulting CA, the newest CA (A). You repeat this for each certificate being signed off of CA B, in this case C and H.
Utilizing maestro to perform the regeneration on the afflicted leaf certificates:
maestro regenerate leaf --name="/cert_charlie" --skip-safety-check maestro regenerate leaf --name="/cert_hotel" --skip-safety-check
Perform an Apply Change with "upgrade" errands on the tiles that correspond with their deployments:
Once complete, resume certificate rotation step where the error was thrown.
Repeat troubleshooting process for every afflicted CA.