Nawróć się.pem to.crt i.klucz
Czy ktoś może mi podać poprawny sposób / polecenie wyodrębnienia / konwersji plików certyfikatu .crt
i klucza prywatnego .key
z pliku .pem
? Właśnie czytałem, że są wymienne, ale nie jak.
6 answers
Udało mi się przekonwertować pem na crt używając tego:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-26 11:15:56
Konwersja Za Pomocą OpenSSL
Te polecenia pozwalają konwertować certyfikaty i klucze do różnych formatów, aby były kompatybilne 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 na DER
openssl x509 -outform der -in certificate.pem -out certificate.der
-
Konwertuj plik PKCS#12 (.pfx .p12) zawierający klucz prywatny i certyfikaty 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 PEM plik certyfikatu i klucz prywatny do 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
OpenSSL Convert 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
Generowanie kluczy rsa przez OpenSSL
-
Używając OpenSSL w wierszu poleceń musisz najpierw wygenerować klucz publiczny i prywatny, powinieneś zabezpieczyć ten plik hasłem używając argumentu-passout, są 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
-
Tworzy to plik klucza o nazwie private.pem, który używa 1024 bitów. Ten plik faktycznie ma zarówno klucze prywatne, jak i publiczne, więc powinieneś 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
Będziesz miał teraz publiczne.pem zawierający tylko twój klucz publiczny, możesz swobodnie udostępniać go stronom trzecim. Możesz przetestować to wszystko, po prostu szyfrując coś jeśli używasz klucza publicznego, a następnie odszyfrowujesz go za pomocą klucza prywatnego, najpierw potrzebujemy trochę danych do zaszyfrowania.]}
-
Przykładowy plik:
echo 'too many secrets' > file.txt
-
Masz teraz pewne dane w pliku.txt, pozwala zaszyfrować go za pomocą OpenSSL i klucz publiczny:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
-
Tworzy to zaszyfrowaną wersję pliku.txt nazywa to plikiem.ssl, jeśli patrzysz na ten plik to po prostu binarne śmieci, nic bardzo przydatnego do ktokolwiek. Teraz możesz odszyfrować go za pomocą klucz prywatny:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
-
Będziesz miał teraz niezaszyfrowany plik w odszyfrowanym.txt:
cat decrypted.txt |output -> too many secrets
Opcje narzędzi RSA w OpenSSL
-
Nazwa
RSA-narzędzie do przetwarzania kluczy RSA
-
SYNOPSIS
Openssl RSA [-help] [- inform PEM / NET / DER] [- outform PEM / NET / DER] [- in filename] [- passin arg] [- out filename] [- passout arg] [- aes128] [- aes192] [- AES256] [-camellia128] [- camellia192] [- camellia256] [- des] [- des3] [- idea] [- text] [- noout] [- modulus] [- check] [- pubin] [- pubout] [- RSAPublicKey_in] [- rsapublickey_out] [- engine id]
-
Opis
Polecenie RSA przetwarza klucze RSA. Mogą być konwertowane między różnymi formularzami i ich komponentami wydrukowanymi. Uwaga To polecenie używa tradycyjnego formatu zgodnego z SSLeay do szyfrowania klucza prywatnego: nowsze aplikacje powinny użyj bezpieczniejszego formatu PKCS # 8 za pomocą narzędzia pkcs8.
-
OPCJE POLECEŃ
-help
Wydrukuj wiadomość o użyciu.
-inform DER|NET|PEM
Określa format wejściowy. Opcja DER używa zakodowanej postaci ASN1 DER zgodnej z formatem PKCS#1 rsaprivatekey lub SubjectPublicKeyInfo. Formularz PEM jest formatem domyślnym: składa się z formatu DER base64 zakodowanego z dodatkowymi liniami nagłówka i stopki. On wejściowe klucze prywatne w formacie PKCS#8 są również akceptowane. Formularz netto jest formatem opisanym w sekcji Notatki.
-outform DER|NET|PEM
Określa format wyjściowy, opcje mają takie samo znaczenie jak opcja-inform.
-in filename
Określa nazwę pliku wejściowego do odczytu klucza lub standardowe wejście, jeśli ta opcja nie jest określona. Jeśli klucz jest zaszyfrowany, zostanie wyświetlony monit o podanie hasła.
-passin arg
Plik wejściowy źródło hasła. Więcej informacji na temat formatu arg można znaleźć w sekcji PASS PHRASE ARGUMENTS w OpenSSL.
-out filename
Określa nazwę pliku wyjściowego do zapisu klucza lub standardowe wyjście, jeśli ta opcja nie jest określona. Jeśli ustawione są opcje szyfrowania, zostanie wyświetlony monit o podanie hasła. Nazwa pliku wyjściowego nie powinna być taka sama jak nazwa pliku wejściowego.
-passout password
Źródło hasła pliku wyjściowego. Więcej informacji na temat format arg patrz sekcja pass PHRASE ARGUMENTS w OpenSSL.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Te opcje szyfrują klucz prywatny za pomocą podanego szyfru przed jego wysłaniem. Szukana fraza to: Jeśli żadna z tych opcji nie jest podana, klucz jest zapisywany zwykłym tekstem. Oznacza to, że za pomocą narzędzia RSA do odczytu w zaszyfrowanym kluczu bez opcji szyfrowania można usunąć frazę pass z klucza lub ustawiając opcje szyfrowania można jej użyć do dodania lub Zmień hasło. Te opcje mogą być używane tylko z plikami wyjściowymi w formacie PEM.
-text
Wypisuje różne komponenty klucza publicznego lub prywatnego w postaci zwykłego tekstu oprócz zakodowanej wersji.
-noout
Ta opcja uniemożliwia wyjście zakodowanej wersji klucza.
-modulus
Ta opcja wyświetla wartość modułu klucza.
-check
Ta opcja sprawdza spójność klucza prywatnego RSA.
-pubin
Domyślnie klucz prywatny jest odczytywany z pliku wejściowego: za pomocą tej opcji jest odczytywany klucz publiczny.
-pubout
Domyślnie kluczem prywatnym jest output: z tą opcją klucz publiczny będzie output. Ta opcja jest ustawiana automatycznie, jeśli wejście jest kluczem publicznym.
-RSAPublicKey_in, -RSAPublicKey_out
Jak-pubin i-pubout z wyjątkiem formatu RSAPublicKey jest używany zamiast tego.
-engine id
Podanie silnika (przez jego unikalny ciąg id) spowoduje, że rsa spróbuje uzyskać odniesienie funkcjonalne do podanego silnika, inicjując je w razie potrzeby. Silnik zostanie wtedy 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 używa nagłówka i stopki linie:
Format PEM rsapublickey wykorzystuje linie nagłówka i stopki:-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
-----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----
NET form jest formatem kompatybilnym ze starszymi serwerami Netscape i Microsoft IIS .kluczowe pliki, To używa unsalted RC4 do jego szyfrowania. Nie jest bardzo bezpieczny i dlatego należy go używać tylko wtedy, gdy jest to konieczne.
Niektóre nowsze wersje usług IIS mają dodatkowe dane w wyeksportowanym pliku .kluczowe pliki. Aby użyć ich z narzędziem, przejrzyj plik za pomocą edytora binarnego i poszukaj łańcuch "private-key", następnie następuje powrót do sekwencji bajtów 0x30 ,0X82 (jest to sekwencja ASN1). Skopiuj wszystkie dane od tego momentu do innego pliku i użyj ich jako danych wejściowych do narzędzia RSA z opcją-inform NET.
Przykłady
Aby usunąć frazę pass w prywatnym kluczu RSA:]}
Aby zaszyfrować klucz prywatny za pomocą potrójnego DES:]}openssl rsa -in key.pem -out keyout.pem
openssl rsa -in key.pem -des3 -out keyout.pem
Aby przekonwertować klucz prywatny z formatu pem do formatu DER:
openssl rsa -in key.pem -outform DER -out keyout.der
Do wydruku z komponentów klucza prywatnego do standardowego wyjścia:
Aby po prostu wypisać publiczną część klucza prywatnego:]}openssl rsa -in key.pem -text -noout
openssl rsa -in key.pem -pubout -out pubkey.pem
Wypisuje publiczną część klucza prywatnego w formacie RSAPublicKey:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-25 19:07:55
Aby wyodrębnić klucz i cert z pliku pem:
Klucz wyciągu
openssl pkey -in foo.pem -out foo.key
Kolejna metoda wydobycia klucza...
openssl rsa -in foo.pem -out foo.key
Wyodrębnij wszystkie certy, łącznie z łańcuchem CA
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
Wyodrębnij tekstowo pierwszy cert jako DER
openssl x509 -in foo.pem -outform DER -out first-cert.der
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-17 00:46:53
0. Warunek wstępny: openssl
powinien być zainstalowany. W systemie Windows, Jeśli Git Bash
jest zainstalowany, spróbuj tego! Alternatywne binaria można znaleźć tutaj.
1. Wyciąg .key
z .pem
:
openssl pkey -in cert.pem -out cert.key
2. Wyciąg .crt
z .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-19 05:38:09
Jeśli zadałeś to pytanie, ponieważ używasz mkcert
, sztuczka polega na tym, że plik .pem
jest cert, a plik -key.pem
jest kluczem.
(nie musisz konwertować, po prostu uruchom mkcert yourdomain.dev otherdomain.dev
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-08 10:13:21
A .crt przechowuje certyfikat.. w formacie pem. A .pem, chociaż może mieć również inne rzeczy, takie jak csr( żądanie podpisania certyfikatu), klucz prywatny, klucz publiczny lub inne certy, gdy przechowuje tylko cert, jest to to samo co .crt.
Pem to zakodowany plik bazowy 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 używać niektórych z OpenSSL polecenia.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
Gdzie = = 1 można zmienić do jakiej sekcji potrzebujesz. Oczywiście, jeśli dokładnie znasz wymagany nagłówek i stopkę, a w pliku jest tylko jeden z nich (zwykle ma to miejsce, jeśli trzymasz w nim tylko cert i klucz), możesz to uprościć:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-06 01:30:19