codesign donne toujours pas d'identité trouvé d'erreur via un terminal
J'ai regardé déjà des questions, mais aucun n'a résolu mes problèmes (comme la recréation des certificats). J'ai créé une appli où l'intérieur de l'application, j'ai quelques fichiers exécutables et les dossiers et cadres. Chaque fois que j'essaie de faire de codesign -s "notre identité" mon.app donne toujours pas de leur identité. Quelqu'un peut-il donner à un processus étape par étape de ce.
codesign -s "Developer ID Application: Sai***** (123123123J)" out/Release/Sai.app
Erreur
Developer ID Application: Sai****** (123123123J): no identity found,
J'ai essayé de l'enlever "IDENTIFIANT de Développeur de l'Application" et le numéro de série, mais tout donne la même erreur
À la recherche de l'aide dans ces lignes
Merci
- Êtes-vous manuellement codesigning de l'application? Si oui, veuillez indiquer l'ensemble de la
codesign
ligne de commande avec les arguments et les messages d'erreur affichés. - salut,je viens de mettre à jour ma question avec toutes les commandes
Vous devez vous connecter pour publier un commentaire.
alors que je n'ai pas pour apple de développement de signature de code, je pense toujours que j'ai quelques précieux à l'intérieur qui pourrait vous aider à déboguer un tel problème. La différence est que j'ai créé mon propre certificat si vous en avez un d'apple.
Vérifier la confiance de la cert, il doit être approuvé pour la signature de code (sur yosemite qui est le troisième en dernier dans la confiance de la section de la cert vue dans le trousseau d'accès). Sachez que pour votre signature de code le cert devrait être dans le trousseau de connexion, j'en avais besoin dans le trousseau du Système.
Au premier abord, le cert n'était pas connu pour codesigning pour le trousseau, car il y a l'Extension but "de Signature de Code" manquant, vous pouvez trouver si vous regardez dans le trousseau d'accès et double-cliquez sur le certificat:
Je fixe que (vous ne pouvez pas fixer comme Apple fournit le cert pour vous. L'extension devrait juste être là):
Puis j'ai ajouté le certificat de confiance des certificats de signature, après j'ai eu le drag&abandonné le certificat dans le trousseau d'accès à mon bureau, qui a créé le ~/Desktop/gdb-cert.cer (soyez conscient que vous pouvez omettre-d et -r trustRoot:
C'était un peu difficile parce que j'ai été induit en erreur par certains postes internet et ne regarde pas à la page de man. Certains ont dit que vous devez utiliser les add-trust (https://llvm.org/svn/llvm-project/lldb/trunk/docs/code-signing.txt). Le terrible était que la commande a réussi, mais n'a pas fait ce qu'il devrait.
Après que j'ai trouvé le nouveau certificat dans la confiance certs comme suit:
Dans mon cas, l'apple cert est expiré, mais celui que j'utilisais à signer gdb ne l'est pas (bien, je viens de créer moi-même). Sachez également que la politique est nommé différemment pour la "sécurité add-confiance-cert"(-p codeSign) et la "sécurité de trouver l'identité de la commande" (- p codesigning). Je suis ensuite allé à signer gdb et j'ai aussi toujours eu:
parce que j'étais sous l'impression que j'ai eu à donner le nom de fichier du fichier cert à l' --signe option, mais qui était en fait le CN du certificat que je devrais avoir et elles doivent l'être dans le magasin de confiance. Vous pouvez trouver le CN ici en double-cliquant sur le cert dans le trousseau d'accès:
ou au-dessus de la sortie de "sécurité trouver-identité-p codesigning". Puis, j'ai continué à signer et j'ai dû lui donner le droit de trousseau. Dans votre cas, ce serait le ~/Bibliothèque/Keychains/login.trousseau, dans mon cas le Système.trousseau:
Qui m'a alors donné un travail de gdb et il devrait vous donner une application signée.
J'ai eu quelques difficultés avec cela. Double-vérifier que votre code de signature de l'identité est dans votre trousseau de clés, et vous pouvez envisager d'utiliser l'algorithme SHA-1 empreinte digitale à la place du nom après le s.
Vous pouvez trouver le SHA-1 d'empreintes digitales par l'ouverture de
Keychain Access
et de la sélection de votreDeveloper ID Application: FOO
certificat, puis en choisissant Obtenir des informations. De là, faites défiler vers le bas de l'information jusqu'à ce que vous atteignez Empreintes digitales. Le SHA-1 d'empreintes digitales ici peuvent être copiés et vous devrez supprimer tous les espaces, mais après que vous aurez de 40 caractères identifiant qui sera approprié pour placer après le-s
dans votre codesign déclaration.Si vous rencontrez toujours des problèmes de localisation de la clé, essayez les solutions suivantes dans le Terminal:
et de chercher quoi que ce soit avec
Developer ID Application
dans leCommon Name
pour vérifier que le certificat est en fait dans un trousseau de clés qui est accessible depuis le Terminal. Si vous ne voyez rien dans la réponse, qui indiquent que le trousseau de clés contenant vos informations d'identification n'est pas disponible pour vosTerminal
session. Les raisons pour cela inclut des choses comme le trousseau d'accès verrouillé, le shell exécute comme un autre utilisateur, l'exécution de la commande avec des autorisations différentes (commesudo
).Après l'exécution de la commande ci-dessus, vous devriez avoir au minimum les éléments suivants:
Si vous n'avez pas tous les trois, vous devriez aller consulter et de télécharger les éléments manquants. Bien que vous ne pouvez pas actuellement besoin de construire un programme d'installation, il n'y a pas de mal à avoir autour. L'Application et Installer les éléments peuvent être téléchargés à partir de la Mac Certificats section de la Certificats, les Identificateurs, les & Profils onglet sur Le site des Développeurs d'Apple. Vous devriez avoir les listes il y, qui ne sont pas expirés. Vous pouvez avoir les listes il y qui ont expiré. Pour installer les certificats dans votre trousseau:
La IDENTIFIANT de Développeur de l'Autorité de Certification doit avoir été installé par Xcode, mais si ce n'était pas le cas, vous pouvez l'installer vous-même. Vous aurez besoin de les télécharger séparément de Développeur ID de l'Autorité ou en cliquant sur le + lien dans Certificats onglet et cliquez sur le lien au bas de télécharger le Certificat.
Ce serait aussi un bon moment pour s'assurer que vous avez le Apple dans le Monde des Relations avec les Développeurs de l'Autorité de Certification, qui est à la base de certains des outils de signature. Elle doit être installée dans votre Système trousseau, par Xcode programme d'installation et peuvent être téléchargés directement à partir de la + lien dans le Certificats onglet ci-dessus ou à partir de Apple WWDR CA.
Selon Apple La Distribution De L'Application Guide, il y a des porte-clés qui sont appropriés pour chacun des Certificats et des clés:
Trousseau De Maintenance
Parce que Xcode automatiquement manipule les keychains, et parce que certains certificats sont ré-émis régulièrement lorsque les profils de changement (mais pas pour le Développeur ID, car il est multi-année de certificats et ne nécessite pas de profils), vous pouvez vous retrouver avec une multiplication inutile et potentiellement source de confusion certificats dans votre trousseau de clés. C'est une bonne idée de les nettoyer quand elles en ont expiré, car ils peuvent créer de la confusion pour Xcode.
AVERTISSEMENTS
Choses à faire:
Terminal
shell inclure le certificat que vous êtes à la signature à partir du shell, pouvez-vous vérifier ceux?codesign
commande avait l'air bien et que la commande est relativement simple.La Réponse est finalement très simple. Ma Clé Privée était manquant.
Pour cela, j'ai révoqué le certificat et le suivi de ses étapes dans le programme de développeur (en Particulier la création de la RSE certificat au cours de ce processus, je n'ai pas eu à plusieurs reprises, à moins que j'ai révoqué le certificat).
Que même
certtool y | grep "Developer ID Application: xxxx"
n'a pas pu afficher tous les résultats, j'ai deviné que c'était un problème d'accès à l'souhaité un trousseau de clés. Alors d'abord j'ai vérifié, la clé privée peut être consulté par toutes les applications dans le trousseau de clés en lui-même et puis j'ai commencé à utiliser le
k=/Users/myUser/Library/Keychains/login.keychain
option dans le certtool de commande, et comme cela a réussi j'ai fait de même aveccodesign --keychain /Users/myUser/Library/Keychains/login.keychain --force --verbose -s "Developer ID Application: xxxx"