Доступ к парам ключей в цепочке ключей MacOS из командной строки

Я создал пару ключей следующим образом:

security create-keypair -a dsa -s 4096 FooBar

Теперь я хочу получить доступ к этому ключу из командной строки, чтобы фактически использовать его (в формате.pem, если это возможно). Тем не мение, security не имеет find-keypairвариант, и я не мог получить другой find_... подкоманды для работы. Есть ли способ сделать это?

Редактировать:

На данный момент я нашел (неудобный) обходной путь:

  1. Сначала вручную создайте "защищенную заметку" в доступе цепочки для ключей, содержимое которой является закрытым ключом.
  2. Используйте следующую мерзость: 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"
Другие вопросы по тегам