Доступ к парам ключей в цепочке ключей MacOS из командной строки
Я создал пару ключей следующим образом:
security create-keypair -a dsa -s 4096 FooBar
Теперь я хочу получить доступ к этому ключу из командной строки, чтобы фактически использовать его (в формате.pem, если это возможно). Тем не мение, security
не имеет find-keypair
вариант, и я не мог получить другой find_...
подкоманды для работы. Есть ли способ сделать это?
Редактировать:
На данный момент я нашел (неудобный) обходной путь:
- Сначала вручную создайте "защищенную заметку" в доступе цепочки для ключей, содержимое которой является закрытым ключом.
- Используйте следующую мерзость:
security find-generic-password -w -s "$SecureNoteName" | xxd -p -r | plutil -extract "NOTE" xml1 -o - - | xmllint --xpath '//string/text()' -
Таким образом, мне кажется, что сначала я должен бороться с цепочкой для ключей, чтобы получить ее содержимое, а затем я должен бороться с списком, чтобы получить значение... Разбор списка может быть упрощен с помощью defaults
команда, но я хотел избежать записи ключа во временный файл, и я не мог получить значения по умолчанию для чтения из стандартного ввода.
1 ответ
Соответствующая команда для получения ключей:security find-key
— по крайней мере, один есть в macOS 13.4 Ventura 2023 года. На основе вашего образца вы можете получить закрытый ключ, используяsecurity find-key -t private -l FooBar
.
Указанное вами имя изначально стало меткой, и ваша команда создала пару, состоящую из типа «частный» и «публичный».
Вывод требует дальнейших обновлений, прежде чем он будет полезен, например, для ssh.
keychain: "/Users/xyz/Library/Keychains/login.keychain-db"
version: 512
class: 0x00000010
attributes:
0x00000000 <uint32>=0x00000010
0x00000001 <blob>="FooBar"