Я хочу извлечь открытый и закрытый ключи из своего PKCS#12
файла для последующего использования в SSH-Public-Key-Authentication.
Прямо сейчас я генерирую ключи через ssh-keygen, который я помещаю .ssh/authorized_key
где-то на стороне клиента.
В будущем я хочу использовать ключи из PKCS#12
контейнера, поэтому мне нужно сначала извлечь открытый ключ, PKCS#12
а затем поместить его в .ssh/authorized_keys
файл. Есть ли шанс заставить это работать openssl
? PKCS#12
Совместимы ли ключи для аутентификации ssh-public-key?
openssl rsa -in privateKey.pem -out private.pem
-passout pass:
. Ожидается, что параметр будет иметь вид pass: mypassword. stackoverflow.com/a/27497899/206277-nodes
экспортирует ключ правильноЭто возможно с небольшим преобразованием формата.
Чтобы извлечь закрытый ключ в формате, openssh может использовать:
Чтобы преобразовать закрытый ключ в открытый:
Чтобы извлечь открытый ключ в формате, openssh может использовать:
источник
OpenSSH не может использовать файлы PKCS # 12 из коробки. Как предлагали другие, вы должны извлечь закрытый ключ в формате PEM, который перенесет вас из земли OpenSSL в OpenSSH. Другие упомянутые здесь решения мне не подходят. Я использую OS X 10.9 Mavericks (на данный момент 10.9.3) с «заранее упакованными» утилитами (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Сначала извлеките закрытый ключ в формате PEM, который будет напрямую использоваться OpenSSH:
Я настоятельно рекомендую зашифровать закрытый ключ паролем:
Очевидно, что написание пароля в виде обычного текста в командной строке также небезопасно, поэтому вам следует удалить последнюю команду из истории или просто убедиться, что она не попадает туда. У разных снарядов разные способы. Вы можете префикс своей команды с пробелом, чтобы предотвратить ее сохранение в истории в Bash и многих других оболочках. Вот как удалить команду из истории в Bash:
В качестве альтернативы вы можете использовать другой способ передачи пароля закрытого ключа в OpenSSL - обратитесь к документации OpenSSL для аргументов парольной фразы .
Затем создайте открытый ключ OpenSSH, который можно добавить в файл authorized_keys:
источник
| openssl rsa
нужен материал?~/.ssh/id_rsa
) с некоторыми «бесполезными» атрибутами типа Bag без `| openssl rsa`. Я предполагаю, что OpenSSH и другие утилиты, использующие файл идентификации, могут справиться с этим мусором (я не пробовал), но я просто использую для предоставления только необходимых данных и ничего более, особенно если это что-то связано с безопасностью.openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts
Решение 1:
Извлечь P12 из jks
Извлеките PEM из P12 и отредактируйте файл и pem из файла crt
Извлечь ключ из jks
Решение 2:
Извлечь PEM и зашифрованный PrivateKey в txt файл ''
Расшифровать privateKey
источник
echo hello
.Обновление: я заметил, что мой ответ был просто плохой копией хорошо объясненного вопроса на https: //unix.stackexchange.com / ... от BryKKan
Вот выдержка из него:
источник
Насколько я знаю, PKCS # 12 - это просто хранилище сертификатов / открытых / закрытых ключей. Если вы извлекли открытый ключ из файла PKCS # 12, OpenSSH должен иметь возможность использовать его, если он был извлечен в формате PEM . Вы, вероятно, уже знаете, что вам также нужен соответствующий закрытый ключ (также в PEM ), чтобы использовать его для аутентификации ssh-public-key.
источник
Принятый ответ - это правильная команда, я просто хочу добавить еще одну вещь: при извлечении ключа, если вы оставите поле PEM password (
"Enter PEM pass phrase:"
) пустым, полный ключ не будет извлечен, а будет извлечен толькоlocalKeyID
он. Чтобы получить полный ключ, вы должны указать пароль PEM при выполнении следующей команды.Обратите внимание, что когда дело доходит до импорта пароля, вы можете указать фактический пароль
"Enter Import Password:"
или оставить его пустым:источник