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 "sécurité" Terminal 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é. Cependant, j'ai oublié de spécifier -T /usr/bin/codesign
, ce qui ajoute l'application de code-code à la liste d'accès de la clé privée. J'ai essayé d'ajouter l'application codesign à la liste d'accès en vain:
security delete-certificate
et de le 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 Keychain GUI ne fonctionnera pas. Par conséquent, je cherche un moyen de supprimer la clé privée du trousseau (pour pouvoir ensuite réimporter l'identité). J'ai consulté la page de manuel de l'outil security
mais je n'ai pas trouvé le moyen de supprimer une clé privée.
Existe-t-il un moyen de supprimer une clé privée d'un trousseau à l'aide des commandes Terminal uniquement (dans la mesure où je n'ai qu'un accès ssh à la machine en question)?
Il existe 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 System-Keychain:
cd /System/Library/Keychains/
Sudo cp SystemRootCertificates.keychain SystemRootCertificates.keychain.old
Répertoriez tous les trousseaux/tous les certificats dans votre trousseau:
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é. Identifiez le certificat que vous souhaitez supprimer . Ensuite, supprimez le certificat à l'aide de la commande suivante:
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. Vous pouvez maintenant 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
Vous pouvez supprimer le certificat et la clé en exécutant une commande dans le terminal:
Sudo security delete-identity -Z "SHA-1"
ou
Sudo security delete-identity -c "CommonName"
Au début, je pensais que cela ne supprimait que la clé, mais en fait, il supprimait également le certificat (il vous suffit de fermer complètement le trousseau et de le rouvrir pour voir les modifications - si vous le vérifiez avec l'interface graphique).
De man security
:
delete-identity [-h] [-c name] [-Z hash] [-t] [keychain...]
Delete a certificate and its private key from a keychain. If no keychain arguments are provided, the default search list is used.
-c name Specify certificate to delete by its common name
-Z hash Specify certificate to delete by its SHA-1 hash
-t Also delete user trust settings for this identity certificate
Vous devrez peut-être d'abord déverrouiller le trousseau (à partir de man security
):
unlock-keychain [-hu] [-p password] [keychain]
Unlock keychain, or the default keychain if none is specified.