Guida alla risoluzione dei problemi per KeyLocker
KeyLocker è uno strumento potente per la firma del codice, che consente di memorizzare il vostro certificato di firma del codice nel cloud e di firmare in modo sicuro l'hash a distanza. Tuttavia, la configurazione iniziale presenta alcune insidie, che questo articolo aiuterà a risolvere.
Indice dell'articolo
- Controllo delle variabili
- Controllo della configurazione corretta
- MMC e controllo della presenza del certificato
- Problemi di firma
- Dove trovare i log
- Altre risorse e informazioni
Controllo delle variabili
Un passo fondamentale per il funzionamento di KeyLocker sul vostro sistema è la corretta configurazione delle variabili. Queste determinano non solo il percorso agli strumenti di firma, ma soprattutto contengono le informazioni di autenticazione. È possibile configurarle per una singola sessione o in modo permanente.
Le variabili possono essere impostate nel sistema in vari modi. Oltre al file singolo e alle variabili stesse, potete conservarle nel Gestore delle credenziali di Windows. Se volete firmare tramite GUI, potete configurarle nel tool Click-to-sign, che trovate nell'account KeyLocker (le variabili, tuttavia, non funzioneranno a livello di sistema).
Per impostare una variabile su Windows, si può usare facilmente il prompt dei comandi. Avviate cmd e digitate setx VARIABILE=valore
Attenzione - setx lavora con le variabili utente, non quelle di sistema.
Per il corretto funzionamento di KeyLocker, è necessario impostare le variabili per l'autenticazione del cliente e la posizione degli strumenti e delle librerie di firma di DigiCert.
Impostazione dell'autenticazione
- SM_CLIENT_CERT_FILE - percorso al certificato di autenticazione con estensione p12, che avete scaricato dalla guida in DigiCert ONE
- SM_HOST - indirizzo host di DigiCert ONE, è https://clientauth.one.digicert.com
Queste due variabili non sono segrete, poiché il certificato è protetto da password. Potete tranquillamente impostarle nel sistema. Le seguenti due variabili, invece, sono segrete e vi consiglio di non impostarle nel sistema, se esso è accessibile a più utenti. È meglio conservarle nel gestore delle password di Windows. Maggiori informazioni sulle impostazioni delle variabili per Windows si trovano nell’articolo Credential setup for Windows.
- SM_API_KEY - chiave API, che avete generato nell'interfaccia DigiCert ONE
- SM_CLIENT_CERT_PASSWORD - password del certificato di autenticazione in P12, che vi è stata visualizzata una sola volta nella guida DC1
Impostazione del percorso agli strumenti di firma
L'aggiunta di un valore alla variabile PATH si fa con il comando setx PATH "path;%PATH%"
. Questo comando aggiunge un nuovo valore ai valori utente esistenti della variabile PATH e lo salva in modo permanente. Per il corretto funzionamento di KeyLocker, è necessario impostarne almeno due:
- Percorso a Windows SDK e signtool
- Percorso a DigiCert Keylocker Tools
Determinare il percorso valido al Windows SDK (il percorso utilizza il numero di versione che avete installato). Avrete bisogno anche di DigiCert Keylocker Tools, che avete scaricato e installato da DigiCert ONE; li trovate in C:\Program Files\DigiCert\DigiCert Keylocker Tools.
Aggiungiamo entrambe le variabili in una volta tramite CMD, altrimenti si sovrascriverà uno con l'altro: setx PATH "C:\Program Files\DigiCert\DigiCert Keylocker Tools\;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\;%PATH%"
Le variabili di sistema possono essere impostate anche tramite l'interfaccia grafica di Windows; tramite CMD è più veloce, ma i valori vengono sovrascritti con input multipli. È possibile utilizzare anche PowerShell.
Come modificare manualmente la variabile PATH su Windows
Se volete assicurarvi che i valori siano conservati, potete modificare PATH manualmente:
- Aprire Pannello di controllo → Sistema → Impostazioni avanzate di sistema.
- Cliccare su Variabili di ambiente.
- Trovare PATH (nelle Variabili di sistema o nelle Variabili utente).
- Cliccare su Modifica, aggiungere i singoli percorsi e salvare.

Come aggiungere la variabile PATH usando PowerShell
Se volete aggiungere in modo permanente un percorso alla variabile PATH usando PowerShell, procedete come segue:
- Aprire PowerShell come amministratore (fare clic con il tasto destro su Start → Windows PowerShell (Admin)).
- Prima determinare il valore attuale della variabile "PATH":
- Quindi aggiungere un nuovo percorso ai valori esistenti:
- Se avete bisogno di aggiungere un altro percorso, ripetere il processo:
- Dopo aver eseguito i comandi, riavviare il prompt dei comandi o il computer per applicare le modifiche.
[System.Environment]::GetEnvironmentVariable("Path", "User")
$path = [System.Environment]::GetEnvironmentVariable("Path", "User")
$newPath = $path + ";C:\Program Files\DigiCert\DigiCert Keylocker Tools\"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
$newPath = $newPath + ";C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
Nota: Se desiderate modificare la variabile di sistema "PATH" (valida per tutti gli utenti), sostituite "User" con "Machine" nel comando.
Controllo del valore di una variabile in cmd:
echo %VARIABILE%
Ad esempio "echo %PATH%". Quindi cmd visualizzerà il suo valore.
Controllo della configurazione corretta
Gli strumenti KeyLocker includono l'utilità smctl, che permette di firmare, ma serve anche alla diagnosi di base. Il seguente comando verifica se tutto è configurato correttamente sul computer e se smctl può connettersi al cloud di DigiCert:
smctl healthcheck
Nell'output, vedrete una conferma se siete connessi a KeyLocker (autenticazione funzionante) e se smctl rileva la presenza degli strumenti di firma, come signtool. Esempio:
smctl healthcheck
--------- Impostazioni account ---------
Teams: Disabilitato
Rilevamento delle minacce: Abilitato
Analisi binaria statica: Abilitata
Analisi della composizione del software: Disabilitata
--------- Credenziali utente ---------
Stato: Connesso
Nome utente: XXXX-keylocker
Account: XXXX-1699076
Autenticazione: 2FA
Ambiente: Produzione
Credenziali:
Host: https://clientauth.one.digicert.com
Chiave API: 010897bf735bbc57d48270cd3d_50dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe4 (Presa dalla variabile di ambiente)
Percorso file certificato cliente: C:\Users\xy\Documents\keylocker\Certificate_pkcs12.p12
Password certificato cliente: ytf_xxxxxx0F (Presa dalla variabile di ambiente)
Chiavi API:
Nome: xy (scade il lun, 31 dic 2029 23:59:59 UTC)
Certificati cliente:
Nome: xy (scade il lun, 31 dic 2029 23:59:59 UTC)
Privilegi:
Può firmare: Sì
Può approvare il rilascio offline: No
Può revocare il certificato: Sì
Può scansionare: No
Permessi:
Manager dell'account:
GESTISCI_AUTORIZZAZIONE_AM
GESTISCI_RUOLO_AM
GESTISCI_UTENTE_ACCOUNT_AM
VISUALIZZA_RUOLO_AM
VISUALIZZA_ACCOUNT_AM
VISUALIZZA_UTENTE_AM
VISUALIZZA_ORGANIZZAZIONE_AM
VISUALIZZA_LOG_CONTROLLO_AM
Coppie di chiavi:
FIRMA_HASH_SM
VISUALIZZA_COPPIA_CHIAVI_SM
GESTISCI_COPPIE_CHIAVI_SM
Certificati:
VISUALIZZA_CERTIFICATO_SM
REVOCA_CERTIFICATO_SM
Altri permessi:
VISUALIZZA_LICENZA_SM
GESTISCI_CHIAVE_API_CC_SM
--------- Strumenti di firma ---------
Strumento di firma 32 bit:
Mappato: No
Strumento di firma:
Mappato: Sì
Percorso: C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe
Mage:
Mappato: No
Nuget:
Mappato: No
Jarsigner:
Mappato: No
Apksigner:
Mappato: No
Se ci sono problemi con l'autenticazione, verificate se avete impostato i valori corretti, che avete ottenuto nella guida di KeyLocker nell'interfaccia DigiCert ONE. Se avete dubbi, potrete reimpostare la guida e creare nuove credenziali.
Potreste anche scoprire che smctl non rileva signtool o altri strumenti di firma. Ciò significa che è necessario aggiungere la loro posizione alla variabile PATH dell'utente o del sistema. Vedi sopra nel paragrafo sulle variabili.
MMC e controllo della presenza del certificato
Se lavorate su Windows, guardate nel gestore dei certificati, che avviate con il comando certmgr.msc. Se la sincronizzazione con KeyLocker avviene correttamente, vedrete il certificato con l'indicazione di una chiave privata nel magazzino certificati. Tuttavia, ciò non significa che sia effettivamente lì con la chiave privata - il certificato con chiave privata è ancora memorizzato nel cloud.
Se il certificato non è presente, avviate la sincronizzazione.
smctl windows certsync
Alla riuscita della sincronizzazione vedrete una conferma:
Sincronizzazione del certificato per alias: key_1236506290, ID: ac793b6d-cac4-4be4-b145-003d4d1d63db e SHA1 Fingerprint: 54d0c7a2d93ae4d5fccb41d97c51a8ab3581c72c
Problemi di firma
Se avete problemi con la firma, provate ad affrontarli dal più generale al più complesso. Il modo più semplice è firmare con l'utility smctl di DigiCert, che può funzionare come un'interfaccia per strumenti di firma come signtool o jarsigner. Questo è il modo meno conflittuale e non richiede parametri. Per la risoluzione dei problemi, non usate timestamp o altre opzioni.
La firma con smctl si effettua semplicemente: smctl sign --keypair-alias=key_1234567890 --input C:\Users\John.Doe\Desktop\file_to_sign.exe
Ci si può riferire al certificato usando il parametro "keypair-alias" o "fingerprint", queste informazioni sul certificato si trovano ad esempio con il comando smctl windows certsync.
Dopo la firma, potete verificare la firma con: smctl sign verify --input
Un aiuto per la firma si trova nell'articolo Sign binaries with SMCTL.
Dopo una firma avvenuta con successo tramite smctl, potete provare a firmare con un altro strumento, per esempio signtool. Anche questo dovrebbe funzionare. Lasciate la selezione automatica dei certificati e aggiungete gradualmente altri parametri.
Una volta che tutto funziona con successo come previsto, potete provare a firmare per esempio tramite Visual Studio o in un altro ambiente di sviluppo.
Dove trovare i log
Se tutto quanto sopra fallisce e la firma non funziona, vi consiglio di controllare nei log di smctl e altri strumenti di DigiCert. Se usate i log nella risoluzione del problema con il nostro supporto, certamente accelererete la risoluzione del problema.
Il log dell'utility smctl si trova nel file smctl.log, che sarà posizionato nella cartella /.signingmanager/logs nel profilo utente attuale. Provate a digitare in cmd echo %USERPROFILE%/.signingmanager/logs
e vedrete la posizione completa della cartella.
Altre risorse e informazioni
- Errori comuni - Guida alla risoluzione dei problemi nella documentazione di KeyLocker.
- Documentazione di KeyLocker sul sito DigiCert
Ci dispiace che non ci hai trovato il necessario.
Ci aiuterai a migliorare l'articolo? Facci sapere cosa qui aspettavi e non hai scoperto.