J'ai parcouru des questions déjà existantes, mais aucune n'a résolu mes problèmes (comme la recréation de certificats). J'ai construit une application où, à l'intérieur de l'application, j'ai peu d'exécutables, de dossiers et de frameworks. Chaque fois que j'essaie de faire du code -s "notre identité" my.app ne donne toujours aucune identité trouvée. Quelqu'un peut-il donner un processus étape par étape de cela.
codesign -s "Developer ID Application: Sai***** (123123123J)" out/Release/Sai.app
Erreur
Developer ID Application: Sai****** (123123123J): no identity found,
J'ai essayé de supprimer "Developer ID Application" et le numéro de série, mais tout donne la même erreur
Vous cherchez de l'aide dans ces lignes
Je vous remercie
alors que je ne l'ai pas fait pour Apple, je pense toujours avoir des informations utiles à l'intérieur qui pourraient vous aider à déboguer un tel problème. La différence est que j'ai créé mon propre certificat pendant que vous obtenez un d'Apple.
Vérifiez la confiance du certificat, il doit être approuvé pour la signature de code (sur yosemite qui est l'avant-dernier dans la section de confiance de la vue cert dans l'accès au trousseau). Sachez que pour votre signature de code, le certificat doit être dans le trousseau de connexion, j'en avais besoin dans le trousseau système.
Au début, le certificat n'était pas connu pour la signature de codes avec le trousseau, car il manquait le but d'extension "Signature de code", vous pouvez le trouver si vous regardez dans le trousseau et double-cliquez sur le certificat:
J'ai corrigé cela (vous ne pouvez pas le réparer comme Apple vous fournit le certificat. L'extension devrait juste être là)):
Ensuite, j'ai ajouté le certificat aux certificats de signature de confiance, après avoir fait glisser et déposé le certificat du trousseau sur mon bureau, ce qui a créé le ~/Desktop/gdb-cert.cer (sachez que vous pouvez omettre -d et -r trustRoot:
$ Sudo security add-trusted-cert -d -r trustRoot -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer
C'était un peu délicat car j'ai été induit en erreur par certaines publications Internet et je n'ai pas consulté la page de manuel. Certains ont dit que vous devriez utiliser add-trust ( https://llvm.org/svn/llvm-project/lldb/trunk/docs/code-signing.txt ). Le plus terrible, c'est que la commande a réussi, mais n'a pas fait ce qu'elle devait.
Après cela, j'ai trouvé le nouveau certificat dans les certificats de confiance comme suit:
$ security find-identity -p codesigning
Policy: Code Signing
Matching identities
1) E7419032D4..... "Mac Developer: FirstName LastName (K2Q869SWUE)" (CSSMERR_TP_CERT_EXPIRED)
2) ACD43B6... "gdb-cert"
2 identities found
Valid identities only
1) ACD43... "gdb-cert"
1 valid identities found
Dans mon cas, le certificat Apple Apple a expiré, mais celui que j'utilisais pour signer gdb ne l'était pas (enfin, je l'ai créé moi-même). Sachez également que la stratégie est nommée différemment pour le "security add-trusted-cert" (- p codeSign) et la commande "security find-identity" (-p codesigning). J'ai ensuite signé gdb et j'ai toujours obtenu:
$ codesign --sign gdb-cert.cer --keychain ~/Library/Keychains/login.keychain `which gdb`
gdb-cert.cer: no identity found
parce que j'avais l'impression que je devais donner le nom de fichier du fichier cert à l'option --sign, mais que c'était en fait le CN du certificat que j'aurais dû fournir et que je devrais être dans le magasin de confiance. Vous pouvez trouver le CN ici en double-cliquant sur le certificat dans le trousseau:
ou dans la sortie ci-dessus de "security find-identity -p codesigning". Ensuite, j'ai continué à signer et j'ai dû lui donner le bon porte-clés. Dans votre cas, cela devrait être le ~/Library/Keychains/login.keychain, dans mon cas le System.keychain:
codesign -s gdb-cert --keychain /Library/Keychains/System.keychain `which gdb`
Cela m'a ensuite donné un gdb fonctionnel et cela devrait vous donner une demande signée.
J'ai également eu des problèmes avec cela. Vérifiez que votre identité de signature de code se trouve dans votre trousseau et vous pourriez envisager d'utiliser l'empreinte SHA-1 au lieu du nom après le -s.
Vous pouvez trouver l'empreinte SHA-1 en ouvrant Keychain Access
et en sélectionnant votre Developer ID Application: FOO
certificat, puis en choisissant Obtenir des informations . À partir d'ici, faites défiler jusqu'au bas des informations jusqu'à ce que vous atteigniez Empreintes digitales . L'empreinte digitale SHA-1 ici peut être copiée et vous devrez supprimer tous les espaces, mais après cela, vous aurez un identifiant de 40 caractères qui sera approprié pour être placé après le -s
dans votre déclaration de code.
Si vous rencontrez toujours des problèmes pour localiser la clé, essayez ce qui suit à partir du terminal:
certtool y | grep Developer\ ID
et cherchez n'importe quoi avec Developer ID Application
dans le Common Name
pour vérifier que le certificat se trouve bien dans un trousseau accessible à partir du terminal. Si vous ne voyez rien en réponse, cela indiquerait que le trousseau contenant vos informations d'identification n'est pas disponible pour votre session Terminal
. Les raisons pourraient inclure des choses comme le trousseau verrouillé, le shell s'exécutant en tant qu'un autre utilisateur, exécutant la commande avec différentes autorisations (telles que Sudo
).
Après avoir exécuté la commande ci-dessus, vous devriez avoir au minimum les éléments suivants:
Developer ID Application: <your company name>
Developer ID Installer: <your company name>
Developer ID Certification Authority
Si vous n'avez pas les trois, vous devriez aller télécharger les éléments manquants. Bien que vous ne puissiez pas actuellement besoin pour construire un programme d'installation, il n'y a aucun mal à l'avoir autour. Les éléments Application et Installer peuvent être téléchargés à partir de la section Certificats Mac de la Certificats, identificateurs et profils onglet sur le site développeur d'Apple . Vous devriez y avoir des listes qui ne sont pas expirées. Vous pouvez également avoir des listes qui ont expiré. Pour installer les certificats dans votre trousseau:
Le Developer ID Certification Authority aurait dû être installé par Xcode, mais si ce n'était pas le cas, vous pouvez l'installer vous-même. Vous devrez le télécharger séparément de Developer ID Authority ou en cliquant sur le lien + dans Onglet Certificats et utilisez le lien en bas pour télécharger le certificat.
Ce serait également le bon moment pour vous assurer que vous disposez de Apple Worldwide Developer Relations Certification Authority, qui est la base de certains des outils de signature. Il doit être installé dans votre système trousseau de clés, par l'installateur Xcode et peut être téléchargé directement à partir du + lien dans l'onglet Certificats ci-dessus ou depuis Apple WWDR CA .
Selon le Guide de distribution des applications d'Apple , il existe des trousseaux spécifiques qui sont appropriés pour chacun des certificats et des clés:
Étant donné que Xcode manipule automatiquement les trousseaux et que certains certificats sont régulièrement réémis lorsque les profils changent (bien que ce ne soit pas pour Developer ID, car il a des certificats pluriannuels et ne nécessite pas de profils), vous pouvez vous retrouver avec une propagation d'inutiles et des certificats potentiellement déroutants dans votre trousseau. C'est une bonne idée de les nettoyer lorsqu'ils ont expiré, car ils peuvent créer une certaine confusion pour Xcode.
[~ # ~] avertissements [~ # ~]
Choses à faire:
La réponse a finalement été très simple. Ma clé privée était manquante. Pour cela, j'ai révoqué le certificat et suivi ses étapes dans le programme développeur (en particulier la création d'un certificat CSR au cours du processus, ce que je n'ai pas obtenu plusieurs fois, sauf si j'ai révoqué le certificat).
Comme même
certtool y | grep "Developer ID Application: xxxx"
n'a pu afficher aucun résultat, j'ai deviné qu'il s'agissait d'un problème d'accès au trousseau souhaité. J'ai donc d'abord vérifié que la clé privée était accessible à toutes les applications du trousseau lui-même, puis j'ai commencé à utiliser le k=/Users/myUser/Library/Keychains/login.keychain
option dans la commande certtool et comme cela a réussi, j'ai fait la même chose avec
codesign --keychain /Users/myUser/Library/Keychains/login.keychain --force --verbose -s "Developer ID Application: xxxx"