Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Voici une question qui me travaille un peu :
Peut-on ajouter une signature digitale à un exe natif généré en PB ? Par exemple, pour mettre sa signature d'éditeur du soft.
Pour info Je suis en PB8 et PB 11.5.
Hors ligne
C'est possible, il faut makecert.exe et signtool.exe (disponibles par exemple dans le platform SDK : voir les infos sur la page de signtool).
Je viens de tester car vu que les exécutables PB ont une structure un peu spéciale (avec le code PB compilé à la fin de l'exe mais en dehors des sections habituelles d'un exe windows) je me demandais si l'ajout de la signature ne risquait pas de casser l'exécutable.
ça fonctionne (mais c'est PBDumper qui ne fonctionne plus après )
Testé avec un exe 11.5, mais je pense que ça doit aussi aller avec les versions précédentes.
Hors ligne
Merci pour ces infos. Je testerai ca.
Hors ligne
FlorentP a écrit:
Merci pour ces infos. Je testerai ca.
Voici la procédure que j'ai utilisée :
1) Génération d'une clé privée et du certificat d'autorité racine (CA) auto-signé, destiné à produire des signatures (et non à chiffrer du contenu comme pour ssl sur un serveur, dans ce cas il faudrait utiliser "/sky exchange") qui périmera le 31/12/2015
makecert.exe /r /pe /cy authority /h 1 /sky signature /n "CN=Seki CA" /ss CA /sr CurrentUser ^ /e "12/31/2015" ^ /sv MyCAKey.pvk MyCA.cer
2) Ajout du certificat racine dans la liste des autorités racines de confiance de l'utilisateur courant
certutil -user -addstore Root MyCA.cer
3) Génération d'une autre clé et d'un certificat "utilisateur", contresigné par l'autorité racine à laquelle nous faisons confiance, le certificat périmera aussi le 31/12, la ligne /eku "1.3.6.1.5.5.7.3.3" indique que ce certificat servira à signer du code
makecert.exe /pe /cy end /n "CN=Sébastien Kirche,O=seki.fr,C=fr,E=sebastien.kirche@free.fr" ^ /sky signature /e "12/31/2015" ^ /eku "1.3.6.1.5.5.7.3.3" ^ /iv MyCaKey.pvk /ic MyCa.cer ^ /sv MySignKey.pvk MySign.cer
4) ajout du certificat dans la liste (de l'utilisateur) des utilisateurs auxquels nous faisons confiance (cette étape n'est pas indispensable pour signer ou tester la validité d'un exe) je la donne pour info
certutil -user -addStore TrustedPeople MySign.cer
5) génération d'un "personal information exchange file (.pfx)" servant à signer le code
pvk2pfx.exe /pvk MySignKey.pvk /spc MySign.cer /pfx MySign.pfx
6) signature d'un exécutable, l'url vers timstamp.dll sert à horodater la signature, cela permet de vérifier que la signature était valide après la date de péremption des certificats utilisé, par exemple si on fait la vérification en janvier 2016
signtool.exe sign /f MySign.pfx /t "http://timestamp.verisign.com/scripts/timstamp.dll" c:\test\exe_a_signer.exe
Nota: les étapes 1 à 3 (4) ne sont pas à faire en production mais uniquement pour tester ou alors pour déployer du code in-house, vu que le certificat racine doit être déployé aussi sur les postes pour que la validité du certificat de signature et celle de la signature puissent être validés. Normalement le certificat de signature est délivré par un professionnel (ex: verisign, Thawte, ...) qui utilise son propre certificat racine.
Dernière modification par seki (29-09-2015 12:14:50)
Hors ligne
seki a écrit:
Testé avec un exe 11.5, mais je pense que ça doit aussi aller avec les versions précédentes.
Ben justement... Je viens de tester rapidement sur des exe 9 à 11.5 et on dirait que seul l'exe 11.5 fonctionne encore après signature.
Apparemment d'après l'auteur de PowerGen "Note that because of the non-standard format of PowerBuilder executables, you cannot use standard signing tools like SignTool". ça m'intrigue.
Hors ligne
J'ai fait le test (vaut mieux tard que jamais ) : Même résultat : avec PB8 et PB9 les exe ne fonctionnement plus après signature.
Merci beaucoup pour cette procédure de signature très bien détaillée.
Hors ligne