10 votes

erreur de conception des produits : SignData a échoué : CSSMERR_CSP_NO_USER_INTERACTION

Lorsque je signe une application à partir d'une session de terminal ssh, j'obtiens l'erreur suivante :

productsign[29321:707] SignData failed: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)

signe des produits fonctionnait jusqu'à récemment.

Comment puis-je contourner cette erreur ?

6voto

Danny Schoemann Points 318

Je l'ai résolu par accident - après avoir parcouru le web pendant des heures - en reproduisant les étapes lors du dépôt d'un rapport d'incident auprès du support Apple.

Depuis le Mac (et non depuis une session ssh), la même commande a généré une fenêtre contextuelle demandant l'autorisation d'accéder au trousseau.

Après avoir choisi "Toujours autoriser", le problème a disparu. Pour toujours.

5voto

lexa-b Points 1261

Essayez de déverrouiller le trousseau de clés depuis ce terminal :

security -v unlock-keychain -p "<Password>" "/Users/<UserName>/Library/Keychains/login.keychain"

3voto

Youw Points 471

Sur la base de Danny Schoemann et mes propres recherches, j'ai trouvé une solution complète pour moi :

  1. Vous devez vraiment vous connecter à votre machine Mac en utilisant GUI , première fois et signez tout ce dont vous avez besoin avec le certificat. Vous obtiendrez alors une fenêtre de demande avec les options disponibles "Toujours permettre" pour utiliser ce certificat (ou quelque chose comme ça).

    • Important : si vous devez utiliser le signe des produits avec ssh ou une autre session de console (comme Jenkins ), votre certificat doit être installé dans système portée, mais no dans la portée de l'utilisateur. enter image description here enter image description here
  2. Si vous devez conserver votre certificat dans la portée de l'utilisateur, vous devez déverrouiller votre trousseau de clés à chaque fois que vous devez signer quelque chose dans une session de console (comme Alex écrit) :

    security -v unlock-keychain -p "Password" /Users/<UserName>/Library/Keychains/login.keychain"

    Vous pouvez le mettre dans votre build script.

    L'inconvénient évident de cette solution est que vous devez stocker votre mot de passe dans un script non crypté, ce qui est peu sûr, donc je préfère la première solution.

3voto

Rohit Sharma Points 31

Vous pouvez en fait réparer cette erreur. Lorsque vous êtes dans la signature du produit, vous utilisez le certificat d'installation de l'ID du développeur et cela suggère généralement qu'il n'a pas accès à la clé privée pour la signature où il échoue avec cette erreur.

Pour corriger cela, allez dans

  1. Accès au trousseau de clés->Cliquez sur la petite flèche triangulaire (>) en face du certificat "Developer ID Installer" sous le trousseau de clés de connexion ou votre trousseau de clés approprié.
  2. Double-cliquez sur la clé privée
  3. Cliquez sur l'onglet "Contrôle d'accès".
  4. Sélectionnez "Autoriser toutes les applications à accéder à cet élément".

Essayez à nouveau de signer des produits à partir de la ligne de commande, cela devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X