5

Я давно использую пары открытого и закрытого ключей. И почти в то же время я спрашиваю себя снова и снова, какое расширение файла мне следует использовать. Похоже, что по крайней мере для открытого и закрытого (openssh) ключей вообще нет соглашения?

Я имею в виду, что в PuTTy есть специальное расширение .ppk для "Закрытого ключа PuTTy", и открытый ключ хранится либо без расширения, либо с .pub . Я лично предпочитаю не использовать .pub , потому что Microsoft уже использует это расширение для MS Publisher. Так что для PuTTy я храню оба ключа с одинаковым именем и добавляю .ppk к приватному ключу и ничего к публичному ключу. И для этого случая я могу жить с этим. Я могу определить, какой ключ является общедоступным, а какой - закрытым, а частный - только для PuTTy.

Но что мне делать с закрытым ключом openssh? Просто хранить его без расширения? Или использовать что-то вроде .openssh? Кроме того, если на самом деле не существует соглашения, если кто-то просто подумал об этом и выбрал для себя какую-то концепцию, я также был бы признателен за это ...

Заранее спасибо!

2 ответа2

8

Во-первых, на самом деле не существует официального соглашения для именования ключей. Их имена не имеют значения. Они важны только для вас, кто должен управлять ими. Программное обеспечение касается только содержимого файлов.

При этом файлы ключей OpenSSH - это просто текстовые файлы, так что вы можете назвать их с расширением .txt .

Обычно я просто придерживаюсь соглашения, которое использует инструмент ssh-keygen : id_{key_algorithm}(т.е. id_rsa или id_dsa) для закрытого ключа, а затем имя закрытого ключа + .pub для открытого ключа (id_rsa.pub или id_dsa.pub). Если мне нужно сохранить несколько ключей, я добавлю дополнительный идентификатор в конец имени, чтобы получить имена, такие как id_rsa_myhost и id_rsa_myhost.pub .

4

Поэтому я подумал о некоторых концепциях именования и в итоге стал таким. Я знаю, что в PuTTy нет соглашения, за исключением .ppk (Закрытый ключ PuTTy) - так что это не "Вы должны делать это так", это скорее идея, как может выглядеть концепция именования. Так что я решил поделиться этим с вами в любом случае - может быть, это поможет кому-то хотя бы построить свою концепцию.

Что я хочу / не хочу

  • Я хочу использовать пары ключей OpenSSH и PuTTy
  • Я хочу, чтобы ключи были сразу идентифицируемыми и не могли быть перепутаны - поэтому я хочу идентифицировать
    • алгоритм
    • если это закрытый или открытый ключ
    • если это формат OpenSSH или PuTTy
  • Я хочу, чтобы имя было Windows и Unix "совместимым / совместимым" (например, я не хочу пробелов в Linux - даже если это не официальная политика)
  • Я не хочу менять все ключи на всех серверах, если что-то (может быть, какая-то проблема безопасности) происходит, поэтому я могу
    • не хочу использовать одну и ту же пару ключей для нескольких серверов
    • хотите использовать пару ключей только для одной цели (например, целью может быть пользователь, служба или задача)

Поэтому имя должно содержать следующую информацию:

  • Информация о назначении, если это (имя пользователя или имя задачи, например)
  • Имя сервера, если это ключ конкретного сервера
  • Алгоритм
  • Это закрытый или открытый ключ?
  • Это формат OpenSSH или PuTTy?

Возможная схема имени

Как уже упоминалось, я думаю, что это действительно хорошая идея - придерживаться синтаксиса инструмента ssh-keygen . Поэтому я использую это (за исключением .pub для открытых ключей, потому что это расширение файла используется Microsoft Publisher и может неверно интерпретироваться в системах Windows - там также есть собственный значок для MS Publisher) и комбинирую его с соглашением PuTTy. (.ppk) и условия выше. Поэтому возможная схема имени может быть:

id_<key_algorithm>_<servername>_<purpose>.<format_information>

Со следующими правилами:

  • Если это не для определенного сервера, удалите <servername>
  • Если это не для конкретной цели, удалите <purpose>
  • По крайней мере одна информация (<purpose> или <servername>) должна содержаться в имени

Формат информации (OpenSSH/PuTTy и private/public)

PuTTy использует .ppk для закрытых ключей, а инструмент ssh-keygen поставляется с .pub для открытых ключей, который я не хочу использовать из-за MS Publisher. Поэтому я придерживаюсь PuTTys .ppk , немного отличаюсь от ssh-keygen s .pub и использую оба "соглашения" в качестве основы для построения других, близких к этим именам. Таким образом, эта информация добавляется как "расширение файла":

Name of OpenSSH private key:  .pk        an alternative could be .opk or   .ospk
Name of OpenSSH public key:   .pubk      an alternative could be .opubk or .ospubk
Name of PuTTY private key:    .ppk
Name of PuTTy Public Key:     .ppubk

Некоторые примеры:

id_rsa_foo_bar.ppk
id_dsa_foo.pk

id_rsa_server01_rsync.pk
id_rsa_server01_rsync.pubk
id_rsa_server01_rsync.ppk
id_rsa_server01_rsync.ppubk

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .