Signer un exécutable Windows sous Linux avec Certum SimplySign
Les mêmes commandes fonctionnent sous Linux, macOS et Windows. Il vous faut l'e-mail de votre compte Certum et votre appli d'authentification. Téléchargez ssign d'abord si ce n'est pas fait.
1. Choisir le mode de connexion
La connexion au cloud SimplySign se fait avec votre e-mail et un code à usage unique à 6 chiffres, pas avec un mot de passe. Donnez à ssign exactement l'un des deux :
| Mode | Option | Quand |
|---|---|---|
| Manuel | -T, --token <CODE> | Sur votre machine : lisez le code du moment dans votre appli d'authentification et passez-le. |
| Automatique | -O, --otp <SEED> | CI et scripts : fournissez une fois votre graine TOTP (seed), et ssign calcule le code à 6 chiffres à chaque exécution. |
CERTUM_OTP, et préférez
--token quand vous signez à la main. Lire les notes de sécurité.2. Signer
# Manuel, en local — collez le code courant de votre appli :
ssign -e vous@example.com -T 123456 app.exe
# Automatisation — la graine une fois, puis sans intervention :
export CERTUM_EMAIL=vous@example.com
export CERTUM_OTP=VOTRE_GRAINE_TOTP_BASE32 # ou l'URI otpauth:// complète
ssign app.exe installeur.dll pilote.sys
Les fichiers sont signés sur place par défaut. --backup garde l'original sous le nom
<fichier>.orig ; -o <DIR> écrit plutôt les fichiers signés dans un autre dossier.
ssign affiche signed <fichier> pour chaque fichier ; ajoutez -v pour voir chaque
étape.
3. Vérifier le résultat
ssign ne vérifie pas les signatures. Utilisez osslsigncode verify app.exe, ou signtool
sous Windows.
Toutes les options
| Option | Variable d'environnement | Effet |
|---|---|---|
FILES | – | Les fichiers à signer. Signés sur place, sauf avec -o. |
-e, --email <EMAIL> | CERTUM_EMAIL | E-mail du compte Certum. Obligatoire. |
-O, --otp <SEED> | CERTUM_OTP | Graine TOTP (en base32, ou une URI otpauth:// complète) : ssign calcule lui-même le code à 6 chiffres. Pour la CI et l'automatisation. |
-T, --token <CODE> | CERTUM_TOKEN | Un code à 6 chiffres en cours de validité, lu dans votre appli d'authentification. Pour une signature manuelle ponctuelle. |
-o, --output-dir <DIR> | – | Écrit les fichiers signés dans ce dossier (créé au besoin) au lieu d'écraser les originaux. |
--timestamp-url <URL> | – | Serveur d'horodatage RFC 3161. Par défaut : http://time.certum.pl/. |
-n, --name <TEXT> | – | Description de la signature, intégrée au fichier. |
-u, --url <URL> | – | URL d'information de la signature, intégrée au fichier. |
--backup | – | En signature sur place, garde l'original à côté sous le nom <fichier>.orig. |
-v, --verbose | – | Affiche chaque étape (connexion ou session en cache, carte, chaque fichier). |
-h, --help / -V, --version | – | Affiche l'aide ou la version. |
Seuls l'e-mail, la graine et le code peuvent venir de variables d'environnement. Préférez-les pour les secrets : une
valeur passée en ligne de commande est visible dans l'historique du shell et dans la liste des processus. Passer à la
fois --otp et --token est une erreur.
La graine : base32 ou URI otpauth://
--otp accepte un secret base32 brut ou une URI otpauth:// complète. Avec un secret brut,
ssign applique les réglages de SimplySign : SHA-256 (et non le SHA-1 par défaut de la plupart des bibliothèques TOTP),
6 chiffres, 30 secondes. Avec une URI, l'algorithme, le nombre de chiffres et la période sont lus dans l'URI. Le code
est calculé à partir de l'horloge du système.
Une connexion pour de nombreux fichiers
ssign se connecte une fois par exécution et signe tous les fichiers listés avec cette session. Il garde aussi la session pendant 20 minutes : les exécutions suivantes dans ce délai, ainsi que le module PKCS#11, signent sans nouveau code. C'est important, car Certum n'accepte chaque code qu'une seule fois. Où la session est stockée, et ce que cela implique : le cache de session.
Bon à savoir
- ssign refuse de signer un fichier PE qui porte déjà une signature (« file already has a signature »).
- Avec
--backup, un fichier.origexistant n'est jamais écrasé : l'exécution s'arrête et le fichier reste intact. - Le fichier signé est d'abord écrit dans un fichier temporaire puis mis en place d'un coup, et il garde les permissions du fichier qu'il remplace.
-net-uintègrent une description et une URL d'information dans la signature.
Vous signez dans un pipeline ? Continuez avec GitHub Actions.