Vie mi niekto povedať správny spôsob/príkaz na extrakciu/konverziu súborov certifikátu .crt
a súkromného kľúča .key
zo súboru .pem
? Práve som sa dočítal, že sú vzájomne zameniteľné, ale nie ako.
Konverzia pomocou OpenSSL Tieto príkazy umožňujú konvertovať certifikáty a kľúče do rôznych formátov, aby boli kompatibilné s konkrétnymi typmi serverov alebo softvéru.
Konverzia súboru DER (.crt .cer .der) na PEM openssl x509 -inform der -in certificate.cer -out certificate.pem
Prevod súboru PEM na DER openssl x509 -outform der -in certificate.pem -out certificate.der
Konverzia súboru PKCS#12 (.pfx .p12) obsahujúceho súkromný kľúč a certifikáty na PEM openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes Môžete pridať -nocerts, ak chcete vypisovať len súkromný kľúč, alebo pridať -nokeys, ak chcete vypisovať len certifikáty.
Konverzia súboru s certifikátom PEM a súkromným kľúčom do formátu PKCS#12 (.pfx .p12) openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Prevod PEM na CRT (.CRT súbor) openssl x509 -outform der -in certificate.pem -out certificate.crt OpenSSL Convert PEM
Previesť PEM na DER openssl x509 -outform der -in certificate.pem -out certificate.der
Prevod PEM na P7B openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
Prevod PEM na PFX openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt OpenSSL Previesť DER
Previesť DER na PEM openssl x509 -inform der -in certificate.cer -out certificate.pem OpenSSL Convert P7B
Previesť P7B na PEM openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Previesť 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
Previesť PFX na PEM openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes Generovanie kľúčov rsa pomocou OpenSSL
Pri použití OpenSSL v príkazovom riadku by ste mali najprv vygenerovať verejný a súkromný kľúč, tento súbor by ste mali chrániť heslom pomocou argumentu -passout, tento argument môže mať rôzne podoby, preto sa o tom informujte v dokumentácii OpenSSL. openssl genrsa -out private.pem 1024
Týmto sa vytvorí súbor s kľúčom private.pem, ktorý používa 1024 bitov. Tento súbor v skutočnosti obsahuje súkromný aj verejný kľúč, takže by ste mali z tohto súboru vyextrahovať verejný kľúč: openssl rsa -in private.pem -out public.pem -outform PEM -pubout alebo
openssl rsa -in private.pem -pubout > public.pem
alebo
openssl rsa -in private.pem -pubout -out public.pem
Teraz budete mať public.pem obsahujúci len váš verejný kľúč, ktorý môžete voľne zdieľať s tretími stranami. Všetko si môžete vyskúšať tak, že si sami niečo zašifrujete pomocou svojho verejného kľúča a potom dešifrujete pomocou svojho súkromného kľúča, najprv potrebujeme trochu údajov na zašifrovanie:
Príklad súboru : echo 'too many secrets' > file.txt
Teraz máte nejaké údaje v súbore file.txt, zašifrujeme ich pomocou OpenSSL a verejného kľúča: openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Tým sa vytvorí zašifrovaná verzia súboru file.txt a nazve sa file.ssl, ak sa pozriete na tento súbor, je to len binárne haraburdie, nič veľmi užitočné nikoho. Teraz ho môžete odšifrovať pomocou súkromného kľúča: Súbor.ssl: openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
Teraz budete mať nešifrovaný súbor v súbore decrypted.txt: cat decrypted.txt |output -> príliš veľa tajomstiev Možnosti RSA TOOLS v OpenSSL
NAME
rsa - nástroj na spracovanie kľúčov 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]
DESCRIPTION
Príkaz rsa spracováva kľúče RSA. Možno ich konvertovať medzi rôznymi formami a vypísať ich zložky. Všimnite si, že tento príkaz používa tradičný formát kompatibilný s SSLeay na šifrovanie súkromných kľúčov: novšie aplikácie by mali používať bezpečnejší formát PKCS#8 pomocou nástroja pkcs8.
MOŽNOSTI PRÍKAZU -help
Vypíše správu o použití. -inform DER|NET|PEM Toto určuje vstupný formát. Voľba DER používa formu ASN1 DER kódovanú v súlade s formátom PKCS#1 RSAPrivateKey alebo SubjectPublicKeyInfo. Formát PEM je predvolený formát: pozostáva z formátu DER kódovaného base64 s dodatočnými riadkami hlavičky a päty. Na vstupe sa akceptujú aj súkromné kľúče vo formáte PKCS#8. Formát NET je formát je opísaný v časti POZNÁMKY. -outform DER|NET|PEM Toto určuje formát výstupu, možnosti majú rovnaký význam ako možnosť -inform. -in názov súboru Určuje názov vstupného súboru, z ktorého sa má kľúč čítať, alebo štandardný vstup, ak táto voľba nie je zadaná. Ak je kľúč zašifrovaný, zobrazí sa výzva na zadanie prístupovej frázy. -passin arg zdroj hesla vstupného súboru. Viac informácií o formáte arg nájdete v časti PASS PHRASE ARGUMENTS v openssl. -out meno súboru Určuje názov výstupného súboru, do ktorého sa má kľúč zapísať, alebo štandardný výstup, ak táto voľba nie je zadaná. Ak sú nastavené nejaké šifrovacie voľby, potom sa zobrazí výzva na zadanie prístupovej frázy. Názov výstupného súboru by nemal byť rovnaký ako názov vstupného súboru. -passout heslo zdroj hesla výstupného súboru. Viac informácií o formáte arg nájdete v časti PASS PHRASE ARGUMENTS v openssl. -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea Tieto voľby zašifrujú súkromný kľúč zadanou šifrou pred jeho odoslaním. Vyžaduje sa zadanie prístupovej frázy. Ak nie je zadaná žiadna z týchto možností, kľúč sa vypíše ako obyčajný text. To znamená, že použitím nástroja rsa na načítanie zašifrovaného kľúča bez možnosti šifrovania možno z kľúča odstrániť prístupovú frázu alebo nastavením možností šifrovania možno použiť na pridanie alebo zmenu prístupovej frázy. Tieto možnosti možno použiť len s výstupnými súbormi vo formáte PEM. -text vypíše okrem zakódovanej verzie aj rôzne zložky verejného alebo súkromného kľúča v čistom texte. -noout táto voľba zabráni výstupu kódovanej verzie kľúča. -modulus táto voľba vypíše hodnotu modulu kľúča. -check táto voľba kontroluje konzistenciu súkromného kľúča RSA. -pubin štandardne sa zo vstupného súboru načíta súkromný kľúč: s touto voľbou sa namiesto neho načíta verejný kľúč. -pubout v predvolenom nastavení sa vypíše súkromný kľúč: s touto voľbou sa namiesto neho vypíše verejný kľúč. Táto voľba je automaticky nastavená, ak je vstupom verejný kľúč. -RSAPublicKey_in, -RSAPublicKey_out ako -pubin a -pubout s tým rozdielom, že sa namiesto toho použije formát RSAPublicKey. -engine id uvedenie motora (pomocou jeho jedinečného reťazca id) spôsobí, že sa rsa pokúsi získať funkčnú referenciu na zadaný motor, čím ho v prípade potreby inicializuje. Motor sa potom nastaví ako predvolený pre všetky dostupné algoritmy.
POZNÁMKY Formát súkromného kľúča PEM používa riadky hlavičky a päty: -----ZAČIATOK SÚKROMNÉHO KĽÚČA RSA----- -----KONIEC SÚKROMNÉHO KĽÚČA RSA----- Formát verejného kľúča PEM používa riadky hlavičky a päty: -----ZAČIATOK VEREJNÉHO KĽÚČA----- -----END PUBLIC KEY----- Formát PEM RSAPublicKey používa riadky hlavičky a päty: -----ZAČIATOK VEREJNÉHO KĽÚČA RSA----- -----END RSA PUBLIC KEY-----
Formát NET je formát kompatibilný so staršími servermi Netscape a súbormi .key Microsoft IIS, tento používa na šifrovanie nesolené RC4. Nie je veľmi bezpečný, a preto by sa mal používať len v nevyhnutných prípadoch. Niektoré novšie verzie IIS majú v exportovaných súboroch .key ďalšie údaje. Ak ich chcete použiť pomocou nástroja, zobrazte súbor pomocou binárneho editora a vyhľadajte reťazec "private-key", potom vyhľadajte postupnosť bajtov 0x30, 0x82 (ide o ASN1 SEQUENCE). Všetky údaje od tohto bodu skopírujte do iného súboru a použite ho ako vstup do nástroja rsa s voľbou -inform NET. PRÍKLADY Odstránenie prístupovej frázy na súkromnom kľúči RSA: openssl rsa -in key.pem -out keyout.pem Šifrovanie súkromného kľúča pomocou trojitého DES: -des3 -out keyout.pem: openssl rsa -in key.pem -des3 -out keyout.pem Konverzia súkromného kľúča z formátu PEM do formátu DER: PEM: openssl rsa -in key.pem -outform DER -out keyout.der Vypísanie komponentov súkromného kľúča na štandardný výstup: openssl rsa -in key.pem -text -noout Ak chcete vypisovať len verejnú časť súkromného kľúča: openssl rsa -in key.pem -pubout -out pubkey.pem Výpis verejnej časti súkromného kľúča vo formáte RSAPublicKey: openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Extrahovanie kľúča a cert zo súboru pem:
openssl pkey -in foo.pem -out foo.key
Ďalší spôsob extrakcie kľúča...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der