Signature d'une application
Bonjour à tous,
Je remarque que pas mal d'applications (toutes?) made in Apple ont un code signature (folder "_CodeSignature" dans le bundle).
Et là je vais vous poser une question con que vous avez sans doute senti venir : à quoi qu'ça sert? ???
Mis à part signer son Application et donc, si je ne me trompe pas, empêcher une modification du binaire?
J'aimerai donc plus d'infos sur le pourquoi qu'il font ça, et aussi comment le faire.
Merci
Je remarque que pas mal d'applications (toutes?) made in Apple ont un code signature (folder "_CodeSignature" dans le bundle).
Et là je vais vous poser une question con que vous avez sans doute senti venir : à quoi qu'ça sert? ???
Mis à part signer son Application et donc, si je ne me trompe pas, empêcher une modification du binaire?
J'aimerai donc plus d'infos sur le pourquoi qu'il font ça, et aussi comment le faire.
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et bien, quand tu as une application signée et que tu la mets à jour et la signe avec le certificat, le système sait que c'est bien le développeur original qui fournit la mise à jour et donc autorise implicitement l'accès au trousseau.
Pour l'instant c'est la seule fonctionnalité documentée de la signature de code (enfin j'ai pas lu en détail les nouveautés de SL à ce sujet, s'il y en a), mais on pourrait imaginer d'autres choses, même jusqu'à aller vers un système comme sur iPhone ou une application ne peut même plus être lancée si elle n'est pas signée par un certificat obtenu auprès d'Apple.
Il y a peu de chance que cela arrive, vu que ça tuerai une grosse partie du marché du freeware/shareware, mais c'est techniquement possible.
pour l'instant, il est tout à fait possible de signer ses applications avec un certificat autogénéré, il y a de la documentation là dessus (chercher "codesign" dans l'aide de XCode). Il semble même que XCode 3.2 dispose d'options (dans l'onglet build) pour signer des applications mac automatiquement.
Non, pas forcément. Par exemple, aujourd'hui, chaque Mà J de mon appli est signée, ce qui est nécessaire pour les Mà J automatiques par Sparkle.
P.S.: Il n'existait pas effectivement un système pour signer ses applis ? Il me semble avoir lu ça quelque part dans la doc, peut-être le chapitre qui concernait le déploiement des .dmg.
Je voulais dire qu'il y a peu de chance qu'Apple oblige un jour les développeurs à signer les applications avec un certificat fourni par Apple contre monnaie sonnante et trébuchante, comme c'est le cas sur iPhone.
Sinon, la doc est par ici.
Edit: Bon, je confirme, XCode peut signer lui même automatiquement les applications. J'ai généré un certificat autosigné comme préconisé dans le document ci-dessus, puis j'ai sélectionné ce certificat dans "Code Signing Identity" de la section "Code Signing" de l'onglet "Build" des propriétés de mon application. A partir de ce moment, XCode signe l'application à chaque compilation.
Sauf que pour les applis iPhone c'est obligé de les signer (avec un certificat autogénéré aussi) pour pouvoir mettre l'appli sur l'iPhone. Alors que sur Mac tu peux les signer... ou pas
Ou plutôt d'un patching qui modifierait le binaire ;D
Merci pour l'info, zoc.
Je n'ai pas encore eu le courage de retrouver la doc et d'implémenter tout ça, pourtant ça peut être un bon moyen d'éviter qu'on ne vienne patcher mon code... j'attends qu'on commence à pirater mon appli pour m'y mettre !
Ouais, enfin, en même temps, je me suis amusé à modifier le fichier Info.plist d'une de mes applications signées. Si l'utilitaire "codesign" détecte bien la modification, l'appli se lance sans aucun avertissement de la part de l'OS... Alors peut-être que j'ai raté un paramètre quelque part, mais en l'état avec la configuration de base, signer une application n'empêchera pas sa modification...