Chcę wyodrębnić klucz publiczny i prywatny z mojego PKCS#12
pliku do późniejszego użycia w uwierzytelnianiu klucza publicznego SSH.
W tej chwili generuję klucze za pomocą ssh-keygen, do którego wkładam .ssh/authorized_key
, odpowiednio gdzieś po stronie klienta.
W przyszłości chcę używać kluczy z PKCS#12
kontenera, więc najpierw muszę wyodrębnić klucz publiczny, PKCS#12
a następnie umieścić je w .ssh/authorized_keys
pliku. Czy jest jakaś szansa, aby to zadziałało openssl
? Czy klucze są PKCS#12
zgodne z uwierzytelnianiem ssh-public-key?
openssl rsa -in privateKey.pem -out private.pem
-passout pass:
. Oczekuje, że parametr będzie miał postać pass: mypassword. stackoverflow.com/a/27497899/206277-nodes
poprawnie eksportuje kluczJest to możliwe przy odrobinie konwersji formatu.
Aby wyodrębnić klucz prywatny w formacie openssh, można użyć:
Aby przekonwertować klucz prywatny na klucz publiczny:
Aby wyodrębnić klucz publiczny w formacie openssh, można użyć:
źródło
OpenSSH nie może używać plików PKCS # 12 po wyjęciu z pudełka. Jak sugerowali inni, musisz wyodrębnić klucz prywatny w formacie PEM, który przeniesie Cię z krainy OpenSSL do OpenSSH. Inne wymienione tutaj rozwiązania nie działają dla mnie. Używam OS X 10.9 Mavericks (obecnie 10.9.3) z narzędziami „paczkowanymi” (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Najpierw wyodrębnij klucz prywatny w formacie PEM, który będzie używany bezpośrednio przez OpenSSH:
Zdecydowanie sugeruję zaszyfrowanie klucza prywatnego hasłem:
Oczywiście pisanie hasła w postaci zwykłego tekstu w wierszu poleceń również nie jest bezpieczne, dlatego należy usunąć ostatnie polecenie z historii lub po prostu upewnić się, że go nie dostanie. Różne muszle mają różne sposoby. Możesz poprzedzić swoje polecenie spacją, aby zapobiec zapisaniu go w historii w Bash i wielu innych powłokach. Oto także, jak usunąć polecenie z historii w Bash:
Alternatywnie możesz użyć innego sposobu, aby przekazać hasło klucza prywatnego do OpenSSL - zapoznaj się z dokumentacją OpenSSL, aby uzyskać argumenty wyrażenia hasła .
Następnie utwórz klucz publiczny OpenSSH, który można dodać do pliku uprawnionych kluczy:
źródło
| openssl rsa
?~/.ssh/id_rsa
) z pewnym „cruft”, takim jak atrybuty torby bez `| openssl rsa`. Wydaje mi się, że OpenSSH i inne narzędzia, które używają pliku tożsamości, potrafią poradzić sobie z tym cruftem (nie próbowałem), ale jestem po prostu przyzwyczajony do dostarczania tylko niezbędnych danych i nic więcej, szczególnie jeśli chodzi o bezpieczeństwo.openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts
Rozwiązanie 1:
Wyodrębnij P12 z jks
Wyodrębnij PEM z P12 i Edytuj plik i pem z pliku crt
Wyodrębnij klucz z jks
Rozwiązanie 2:
Wyodrębnij PEM i encryptedPrivateKey do pliku txt ''
Odszyfruj klucz prywatny
źródło
echo hello
.Aktualizacja: Zauważyłem, że moja odpowiedź była tylko kiepskim duplikatem dobrze wyjaśnionego pytania na stronie https: //unix.stackexchange.com / ... autorstwa BryKKan
Oto fragment z niego:
źródło
O ile wiem PKCS # 12 to tylko magazyn certyfikatów / kluczy publicznych / prywatnych. Jeśli wyodrębniłeś klucz publiczny z pliku PKCS # 12, OpenSSH powinien móc go używać, dopóki jest on wyodrębniony w formacie PEM . Prawdopodobnie już wiesz, że potrzebujesz również odpowiedniego klucza prywatnego (również w PEM ), aby móc go używać do uwierzytelniania ssh-kluczem publicznym.
źródło
Zaakceptowana odpowiedź to poprawne polecenie, chcę tylko dodać jedną dodatkową rzecz, podczas wyodrębniania klucza, jeśli pozostawisz
"Enter PEM pass phrase:"
puste hasło PEM ( ), pełny klucz nie zostanie wyodrębniony, ale tylkolocalKeyID
zostanie wyodrębniony. Aby uzyskać pełny klucz, musisz podać hasło PEM, uruchamiając następujące polecenie.Pamiętaj, że jeśli chodzi o hasło importowania, możesz podać rzeczywiste hasło
"Enter Import Password:"
lub pozostawić to hasło puste:źródło