Supprimer la clé privée du trousseau Mac OS X à L'aide du Terminal

J'ai importé une identité de développeur (certificat + clé privée) pour le développement iOS dans un trousseau à l'aide de L'application de Terminal "sécurité" avec la commande

security import identity.p12 -k <keychain> -P <passphrase>

Cela importe les deux éléments inclus dans le fichier p12, le certificat et la clé privée, dans le trousseau donné. J'ai oublié de spécifier -T /usr/bin/codesign, cependant, qui ajoute l'application codesign à la liste d'accès de la clé privée. J'ai essayé d'ajouter le codesign application à la liste d'accès en vain:

  • j'ai essayé de réimporter l'identité avec le paramètre ajouté mais cela ne semble pas changer la liste d'accès de la clé privée.
  • j'ai également essayé de supprimer le certificat du trousseau en utilisant security delete-certificate et de réimporter. Cela ne modifie pas la liste d'accès de la clé privée.

Comme je n'ai qu'un accès ssh à la machine, l'utilisation de L'application GUI Keychain ne fonctionnera pas. Par conséquent, je cherche un moyen de supprimer la clé privée du trousseau (afin que je puisse réimporter l'identité ensuite). J'ai vérifié la page de manuel de l'Outil security mais je n'ai pas trouvé de moyen de supprimer une clé privée.

Est-il possible de supprimer une clé privée d'un trousseau en utilisant uniquement les commandes du Terminal (car je n'ai qu'un accès ssh à la machine en question)?

25
demandé sur Erik 2011-10-06 21:17:42

1 réponses

Il y a plusieurs porte-clés sur votre système:

sudo security list-keychains
"/Users/JonDoe/Library/Keychains/login.keychain"
"/Library/Keychains/System.keychain"

Je pense que vous l'avez importé dans le système-trousseau: Faites d'abord une sauvegarde de vos certificats racine système avant d'apporter des modifications (ou tout autre trousseau que vous choisissez):

cd /System/Library/Keychains/
sudo cp SystemRootCertificates.keychain SystemRootCertificates.keychain.old

Liste tous les porte-clés / tous les certificats dans votre porte-clés:

ls -l /System/Library/Keychains/
sudo security dump-keychain /System/Library/Keychains/SystemRootCertificates.keychain

Avec la deuxième commande, chaque certificat du trousseau est affiché. Identifier le certificat que vous souhaitez supprimer. Retirez ensuite le certificat avec ce qui suit commande:

sudo security delete-certificate -Z <SHA-1 hash of certificate> /System/Library/Keychains/SystemRootCertificates.keychain
**alternative:**
sudo security delete-certificate -c <common name of certificate> /System/Library/Keychains/SystemRootCertificates.keychain

C'est tout. Maintenant, vous pouvez importer à nouveau votre certificat. En cas d'erreur, vous pouvez restaurer votre trousseau avec la commande suivante:

sudo security import certificate_files_backup -k /System/Library/Keychains/SystemRootCertificates.keychain -t cert
33
répondu Erik 2011-10-12 15:49:11