J'importe mon identité numérique (certificat X.509 et clé privée pour la signature, la vérification, le cryptage et le décryptage des messages) dans le trousseau. Dans l'interface graphique, je vois mon certificat et la clé correspondante, je peux modifier leurs descriptions et rédiger une note décrivant leur utilisation, etc.
Cependant, lorsque Mail.app essaie d'accéder à la clé privée, il affiche une boîte de dialogue indiquant que "Mail souhaite utiliser vos informations confidentielles stockées dans" privateKey "dans votre trousseau.".
Maintenant, j'ai plusieurs identifiants numériques pour différentes adresses, donc ce message ne me donne aucune idée de la clé à laquelle il tente d'accéder. J'ai examiné un peu et il s'est avéré que lorsque vous importez une clé, une liste d'ACL est également créée dans le trousseau. Chaque élément de cette liste d'ACL a une description facultative. Je crois que quand aucune description n'est définie, la boîte de dialogue mentionnée utilisera la description de la clé, mais s'il existe une description de liste de contrôle d'accès, elle sera utilisée à la place.
Lorsque je vide mon trousseau avec "security dump-keychain -a", le message suivant s'affiche:
keychain: "/Users/galaxy/Library/Keychains/login.keychain"
class: 0x00000010
attributes:
0x00000000 <uint32>=0x00000010
0x00000001 <blob>=0x646[...]00 "galaxy@domain.tld\000"
0x00000002 <blob>=<NULL>
[...]
0x0000001A <uint32>=0x00000001
access: 3 entries
entry 0:
authorizations (1): encrypt
don't-require-password
description: privateKey
applications: <null>
entry 1:
authorizations (6): decrypt derive export_clear export_wrapped mac sign
don't-require-password
description: privateKey
applications (0):
entry 2:
authorizations (1): change_acl
don't-require-password
description: privateKey
applications (0):
Tout d'abord, je souhaite modifier la description de "privateKey" en "galaxy@domain.tld (chiffrement)" pour l'entrée 0 de la liste de contrôle d'accès. J'ai beaucoup cherché, mais je n'ai trouvé que des références à l'API OS X pour le faire. Y a-t-il un outil pour faire ça? S'il n'y a pas un tel outil, comment puis-je le configurer au moment de l'importation? Je demande depuis le moment où StartSSL oblige automatiquement Safari à importer l'ID numérique, la description de la liste de contrôle d'accès est définie sur 'www.startssl.com', je sais donc qu'il est possible de la configurer.
Enfin, une question de prime existe-t-il un outil ou un moyen de personnaliser les ACL? Par exemple, je souhaite supprimer export_ * de la liste de contrôle d'accès de l'entrée 1 (j'ai également constaté que cela était effectué par StartSSL avec leurs identificateurs numériques).
UPDATE: Depuis qu'Apple a publié son interface graphique d'accès au trousseau en tant que source ouverte, j'ai vérifié les sources pour l'importation PKCS # 12 et ils ont une option pour définir la description et les ACL au moment de l'importation. Cependant, je n'ai jamais rien codé pour OS X et il est difficile de déterminer la condition à remplir pour obtenir la description des ACL et des ACL elles-mêmes au moment de l'importation. La logique se trouve dans le package de sécurité dans pkcs12Crypto.cpp:
[galaxy@home:~/xcode/Security-55471.14.18/libsecurity_pkcs12/lib]$ grep -B5 -A5 '"privateKey"' pkcs12Crypto.cpp
try {
CssmClient::KeyAclBearer bearer(
cspHand, *privKey, Allocator::standard());
SecPointer<KeychainCore::Access> initialAccess(access ?
KeychainCore::Access::required(access) : /* caller-supplied */
new KeychainCore::Access("privateKey")); /* default */
initialAccess->setAccess(bearer, maker);
}
catch (const CssmError &e) {
/* not implemented means we're talking to the CSP which does
* not implement ACLs */
Malheureusement, dans toutes mes tentatives d’importation, je rencontre toujours la description "privateKey" codée en dur et, quand j’ai, disons, 5 identifiants numériques différents, ils demandent tous l’accès avec "privateKey" dans la boîte de dialogue, ce qui prête à confusion.