Konwertuj .pem na .crt i .key

Odpowiedzi:

500

Byłem w stanie przekonwertować pem na crt za pomocą tego:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
CB
źródło
13
Korzystanie z edytora tekstu nie jest najlepszym podejściem. Aby wyodrębnić klucz w postaci PKCS8: openssl pkey -in mumble.pem -out mumble-key.pem Jeśli wersja OpenSSL jest starsza niż 1.0.0, wyodrębnij klucz jako klucz RSA:openssl rsa -in mumble.pem -out mumble-key.pem
Andron
131
Próbowałem twojego polecenia, ale miałem:unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol
15
polecenie klucza (openssl pkey -in mumble.pem -out mumble-key.pem) daje to: nie można załadować klucza 129051320116880: błąd: 0906D06C: Procedury PEM: PEM_read_bio: brak linii startowej: pem_lib.c: 703: Oczekiwanie: DOWOLNY PRYWATNY KLUCZ
mylord
2
openssl rsa -in your-cert.pem -outform pem -out your-key.pem
troyfolger
3
@Andron zarówno pkey, jak i rsa dają mi Expecting: ANY PRIVATE KEYbłąd.
Aero Wang,
393

Konwersja za pomocą OpenSSL

Te polecenia pozwalają konwertować certyfikaty i klucze na różne formaty, aby były zgodne z określonymi typami serwerów lub oprogramowania.

  • Konwertuj plik DER (.crt .cer .der) do PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • Konwertuj plik PEM do DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Konwertuj plik PKCS # 12 (.pfx .p12) zawierający klucz prywatny i certyfikaty do PEM

    openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
    
    You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
    
  • Konwertuj plik certyfikatu PEM i klucz prywatny na PKCS # 12 (.pfx .p12)

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
  • Konwertuj PEM na CRT (plik .CRT)

    openssl x509 -outform der -in certificate.pem -out certificate.crt
    

OpenSSL Convert PEM

  • Konwertuj PEM na DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Konwertuj PEM na P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • Konwertuj PEM na PFX

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    

OpenSSL Convert DER

  • Konwertuj DER na PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

Konwerter OpenSSL P7B

  • Konwertuj P7B na PEM

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
  • Konwertuj P7B na PFX

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
    openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
    

OpenSSL Convert PFX

  • Konwertuj PFX na PEM

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    

Wygeneruj klucze rsa przez OpenSSL

  • Używając OpenSSL w wierszu poleceń, który musisz najpierw wygenerować klucz publiczny i prywatny, powinieneś zabezpieczyć ten plik hasłem za pomocą argumentu -passout, istnieje wiele różnych form, które ten argument może przyjąć, więc zapoznaj się z dokumentacją OpenSSL na ten temat.

    openssl genrsa -out private.pem 1024
    
  • Spowoduje to utworzenie pliku klucza o nazwie private.pem, który używa 1024 bitów. Ten plik faktycznie ma zarówno klucze prywatny, jak i publiczny, dlatego należy wyodrębnić publiczny z tego pliku:

    openssl rsa -in private.pem -out public.pem -outform PEM -pubout
    
    or
    
    openssl rsa -in private.pem -pubout > public.pem
    
    or
    
    openssl rsa -in private.pem -pubout -out public.pem
    

    Otrzymasz teraz public.pem zawierający tylko swój klucz publiczny, możesz swobodnie udostępniać go stronom trzecim. Możesz to wszystko przetestować, po prostu szyfrując coś samodzielnie za pomocą klucza publicznego, a następnie odszyfrowując za pomocą klucza prywatnego, najpierw potrzebujemy trochę danych do zaszyfrowania:

  • Przykładowy plik:

    echo 'too many secrets' > file.txt
    
  • Masz teraz trochę danych w pliku.txt, pozwalamy je zaszyfrować za pomocą OpenSSL i klucza publicznego:

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • Tworzy to zaszyfrowaną wersję file.txt nazywającą go file.ssl, jeśli spojrzysz na ten plik, to tylko binarne śmieci, nic bardzo przydatnego dla nikogo. Teraz możesz go odszyfrować za pomocą klucza prywatnego:

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • Będziesz teraz mieć niezaszyfrowany plik w decrypted.txt:

    cat decrypted.txt
    |output -> too many secrets
    

Opcje NARZĘDZI RSA w OpenSSL

  • IMIĘ

    rsa - narzędzie do przetwarzania klucza RSA

  • STRESZCZENIE

    openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in nazwa pliku] [-passin arg] [-out nazwa pliku] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-silnik silnika]

  • OPIS

    Komenda rsa przetwarza klucze RSA. Można je konwertować między różnymi formularzami i drukować ich elementy. Uwaga: to polecenie używa tradycyjnego formatu zgodnego z SSLeay do szyfrowania klucza prywatnego: nowsze aplikacje powinny używać bezpieczniejszego formatu PKCS # 8 za pomocą narzędzia pkcs8.

  • OPCJE POLECENIA

    -help
    

    Wydrukuj komunikat użytkowania.

    -inform DER|NET|PEM
    

    Określa format wejściowy. Opcja DER wykorzystuje zakodowaną w ASN1 formę DER zgodną z formatem PKCS # 1 RSAPrivateKey lub SubjectPublicKeyInfo. Formularz PEM jest formatem domyślnym: składa się z formatu DER base64 zakodowanego z dodatkowymi wierszami nagłówka i stopki. Na wejściu akceptowane są również klucze prywatne w formacie PKCS # 8. Formularz NET to format opisany w sekcji UWAGI.

    -outform DER|NET|PEM
    

    Określa format wyjściowy, opcje mają takie samo znaczenie jak opcja -inform.

    -in filename
    

    Określa wejściową nazwę pliku, z której ma być odczytany klucz lub standardowe wejście, jeśli ta opcja nie jest określona. Jeśli klucz jest zaszyfrowany, pojawi się monit o podanie hasła.

    -passin arg
    

    źródło hasła do pliku wejściowego. Aby uzyskać więcej informacji na temat formatu arg, zobacz sekcję PASE ARGUMENTÓW w openssl.

    -out filename
    

    Określa wyjściową nazwę pliku do zapisania klucza lub standardowe wyjście, jeśli ta opcja nie jest określona. Jeśli ustawiono jakiekolwiek opcje szyfrowania, zostanie wyświetlony monit o podanie hasła. Wyjściowa nazwa pliku nie powinna być taka sama jak wejściowa nazwa pliku.

    -passout password
    

    źródło hasła do pliku wyjściowego. Aby uzyskać więcej informacji na temat formatu arg, zobacz sekcję PASE ARGUMENTÓW w openssl.

    -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
    

    Te opcje szyfrują klucz prywatny za pomocą określonego szyfru przed wysłaniem go. Zostanie wyświetlony monit o podanie hasła. Jeśli nie podano żadnej z tych opcji, klucz jest zapisywany zwykłym tekstem. Oznacza to, że użycie narzędzia rsa do odczytania zaszyfrowanego klucza bez opcji szyfrowania może być użyte do usunięcia hasła z klucza lub poprzez ustawienie opcji szyfrowania można go użyć do dodania lub zmiany hasła. Tych opcji można używać tylko z plikami wyjściowymi w formacie PEM.

    -text
    

    drukuje różne komponenty klucza publicznego lub prywatnego w postaci zwykłego tekstu oprócz wersji kodowanej.

    -noout
    

    ta opcja zapobiega wyjściu zakodowanej wersji klucza.

    -modulus
    

    ta opcja wypisuje wartość modułu klucza.

    -check
    

    ta opcja sprawdza spójność klucza prywatnego RSA.

    -pubin
    

    domyślnie klucz prywatny jest odczytywany z pliku wejściowego: przy tej opcji klucz publiczny jest odczytywany.

    -pubout
    

    domyślnie jest wyprowadzany klucz prywatny: z tą opcją zostanie wyprowadzony klucz publiczny. Ta opcja jest ustawiana automatycznie, jeśli dane wejściowe są kluczem publicznym.

    -RSAPublicKey_in, -RSAPublicKey_out
    

    jak -pubin i -pubout, z wyjątkiem tego, że używany jest format RSAPublicKey.

    -engine id
    

    określenie silnika (poprzez jego unikalny ciąg id) spowoduje, że rsa spróbuje uzyskać funkcjonalne odwołanie do określonego silnika, w ten sposób inicjując go w razie potrzeby. Silnik zostanie wówczas ustawiony jako domyślny dla wszystkich dostępnych algorytmów.

  • UWAGI

    Format klucza prywatnego PEM wykorzystuje linie nagłówka i stopki:

    -----BEGIN RSA PRIVATE KEY-----
    
    -----END RSA PRIVATE KEY-----
    

    Format klucza publicznego PEM wykorzystuje linie nagłówka i stopki:

    -----BEGIN PUBLIC KEY-----
    
    -----END PUBLIC KEY-----
    

    Format PEM RSAPublicKey wykorzystuje linie nagłówka i stopki:

    -----BEGIN RSA PUBLIC KEY-----
    
    -----END RSA PUBLIC KEY-----
    

    Formularz NET jest formatem zgodnym ze starszymi serwerami Netscape i plikami .key Microsoft IIS, do szyfrowania używa niesolonego RC4. Nie jest bardzo bezpieczny i dlatego należy go używać tylko w razie potrzeby.

    Niektóre nowsze wersje IIS zawierają dodatkowe dane w eksportowanych plikach .key. Aby użyć ich z narzędziem, przejrzyj plik za pomocą edytora binarnego i poszukaj ciągu „klucz prywatny”, a następnie prześledzić z powrotem do sekwencji bajtów 0x30, 0x82 (jest to SEKWENCJA ASN1). Skopiuj wszystkie dane od tego miejsca do innego pliku i użyj ich jako danych wejściowych do narzędzia rsa z opcją -inform NET.

    PRZYKŁADY

    Aby usunąć hasło z klucza prywatnego RSA:

     openssl rsa -in key.pem -out keyout.pem
    

    Aby zaszyfrować klucz prywatny przy użyciu potrójnego DES:

     openssl rsa -in key.pem -des3 -out keyout.pem
    

    Aby przekonwertować klucz prywatny z formatu PEM na format DER:

      openssl rsa -in key.pem -outform DER -out keyout.der
    

    Aby wydrukować składniki klucza prywatnego na standardowe wyjście:

      openssl rsa -in key.pem -text -noout
    

    Aby wydrukować tylko część publiczną klucza prywatnego:

      openssl rsa -in key.pem -pubout -out pubkey.pem
    

    Wyjście publicznej części klucza prywatnego w formacie RSAPublicKey:

      openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    
zimozielony
źródło
32
To jednak nie odpowiada na pytanie, jak uzyskać klucz prywatny z (eksportowanego) certyfikatu binarnego.
bbaassssiiee,
dziękuję, zastanawiając się, czy mam PEM zawierający klucz prywatny i certyfikaty, jak mogę uzyskać tylko certyfikaty? Wiem, że mogę skopiować z niego część certyfikatów za pomocą edytora tekstu, ale chcę wiedzieć, czy jest jakieś polecenie openssl, dzięki
workplaylifecycle
46

Aby wyodrębnić klucz i certyfikat z pliku pem:

Wyodrębnij klucz

openssl pkey -in foo.pem -out foo.key

Inna metoda wyodrębnienia klucza ...

openssl rsa -in foo.pem -out foo.key

Wyodrębnij wszystkie certyfikaty, w tym Łańcuch CA

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Wyodrębnij tekstowo pierwszy certyfikat jako DER

openssl x509 -in foo.pem -outform DER -out first-cert.der
Autostrada życia
źródło
7
openssl x509 -outform der -in C: \ Users \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Users \ Greg \ .ssh \ e360_stork_listener.crt nie można załadować certyfikatu 4294956672: błąd: 0906D06C: Procedury PEM: PEM_read_bio: brak linii startowej: pem_lib.c: 708: Oczekiwanie:
ZAUFANY
5

0. Warunek : openssl powinien zostać zainstalowany. W systemie Windows, jeśli Git Bashjest zainstalowany, spróbuj tego! Alternatywne pliki binarne można znaleźć tutaj.

1. Wyciąg .keyz .pem:

openssl pkey -in cert.pem -out cert.key

2. Wyciąg .crtz .pem:

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Saikat
źródło
1

.Crt przechowuje certyfikat .. w formacie pem. Tak więc .pem, chociaż może mieć także inne rzeczy, takie jak csr (żądanie podpisania certyfikatu), klucz prywatny, klucz publiczny lub inne certyfikaty, gdy przechowuje tylko certyfikat, jest tym samym, co .crt.

Pem to plik zakodowany w formacie 64 z nagłówkiem i stopką między każdą sekcją.

Aby wyodrębnić konkretną sekcję, skrypt perla, taki jak poniżej, jest całkowicie poprawny, ale możesz swobodnie korzystać z niektórych poleceń openssl.

 perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem

gdzie == 1 można zmienić na potrzebną sekcję. Oczywiście, jeśli dokładnie znasz wymagany nagłówek i stopkę, a w pliku znajduje się tylko jeden z nich (zwykle tak jest, jeśli przechowujesz tylko certyfikat i klucz), możesz go uprościć:

 perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem
Gerard ONeill
źródło
0

Jeśli zadałeś to pytanie, ponieważ używasz, mkcertsztuczka polega na tym, że .pemplik to cert i-key.pem plik jest kluczem.

(Nie musisz konwertować, po prostu uruchom mkcert yourdomain.dev otherdomain.dev)

Barney
źródło