Mam certyfikat w der
formacie, z niego tym poleceniem generuję klucz publiczny:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Co powoduje to:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Jak mogę uzyskać taki klucz publiczny? Czy z certyfikatu, czy z tego klucza publicznego?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Uzyskano to za pomocą tego polecenia:
ssh-keygen -y -f private_key1.pem > public_key1.pub
ssh-keygen -y -f private_key1.pem > public_key1.pub
działało świetnie dla mnie.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
jest inne dla-i
/-e
. Więc moi przyjaciele, upewnijcie się, że wiecie, czego chcecie i co macie . :-)Odpowiedzi:
Nie ma potrzeby kompilowania rzeczy. Możesz zrobić to samo z
ssh-keygen
:odczyta klucz publiczny w formacie openssl z
pub1key.pub
i wyprowadzi go w formacie OpenSSH.Uwaga : w niektórych przypadkach konieczne będzie określenie formatu wejściowego:
Z dokumentacji ssh-keygen (From man ssh-keygen):
źródło
-m PKCS8
było to konieczne$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Nie potrzeba skryptów ani innych „sztuczek”:
openssl
issh-keygen
wystarczą. Zakładam, że nie ma hasła do kluczy (co jest złe).Wygeneruj parę RSA
Wszystkie poniższe metody dają parę kluczy RSA w tym samym formacie
Z openssl ( man genrsa )
W OpenSSL wersja 1.0.1
genrsa
została zastąpiona przez,genpkey
więc jest to nowy sposób na zrobienie tego ( man genpkey ):Dzięki ssh-keygen
Konwersja DER do PEM
Jeśli masz parę kluczy RSA w formacie DER, możesz przekonwertować ją na PEM, aby umożliwić konwersję formatu poniżej:
Pokolenie:
Konwersja:
Wyodrębnij klucz publiczny z pary RSA w formacie PEM
w formacie PEM:
w formacie OpenSSH v2 zobacz :
Uwagi
Wersja systemu operacyjnego i oprogramowania:
Bibliografia:
źródło
ssh-rsa
formacie? Dobre odniesienie, przy okazji.ssh-keygen -y -f dummy-xxx.pem
tworzyssh-rsa AAAA[...]==
dopasowanie doauthorized_keys
pliku ssh .Odpowiadając na własne pytanie, po zamieszczeniu na liście mailingowej openssl otrzymałem to:
Oto kod C do konwersji z klucza publicznego OpenSSL na klucz publiczny OpenSSH. Możesz pobrać kod z tego linku i skompilować go samodzielnie:
źródło
źródło
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
openssl genrsa -out newkey.pem 2048
iopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
źródło
Zrobiłem z
Kredyt jest tutaj
źródło
Poniższy skrypt uzyskałby certyfikat klucza publicznego ci.jenkins-ci.org w formacie DER z kodowaniem base64 i przekonwertowałby go na plik klucza publicznego OpenSSH. Ten kod zakłada, że używany jest 2048-bitowy klucz RSA i wiele czerpie z odpowiedzi Iana Boyda . Wyjaśniłem nieco więcej, jak to działa w komentarzach do tego artykułu na wiki Jenkinsa.
źródło
FWIW, ten skrypt BASH weźmie certyfikat X.509 w formacie PEM lub DER lub plik klucza publicznego OpenSSL (również format PEM) jako pierwszy argument i wyłączy klucz publiczny OpenSSH RSA. To jest rozwinięciem odpowiedzi @ mkalkov powyżej. Wymagania te
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+) i, oczywiściebash
. Wszystko z wyjątkiemopenssl
(zawierabase64
) jest prawie gwarantowane jako część instalacji podstawowej w każdym nowoczesnym systemie Linux, z wyjątkiem być możexxd
(które Fedora pokazuje wvim-common
pakiecie). Jeśli ktoś chce to posprzątać i upiększyć, zastrzegam lektora.źródło