Converteer .pem naar .crt en .key

Kan iemand mij vertellen wat de juiste manier/opdracht is om het certificaat .crten de privésleutel .key-bestanden uit een .pembestand? Ik las net dat ze uitwisselbaar zijn, maar niet hoe.


Antwoord 1, autoriteit 100%

Ik kon pem converteren naar crt met dit:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt

Antwoord 2, autoriteit 79%

Converteren met OpenSSL

Met deze opdrachten kunt u certificaten en sleutels converteren naar verschillende formaten om ze compatibel te maken met specifieke typen servers of software.

  • Converteer een DER-bestand (.crt .cer .der) naar PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • Een PEM-bestand converteren naar DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Converteer een PKCS#12-bestand (.pfx .p12) met een persoonlijke sleutel en certificaten naar 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.
    
  • Converteer een PEM-certificaatbestand en een persoonlijke sleutel naar PKCS#12 (.pfx .p12)

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
  • PEM converteren naar CRT (.CRT-bestand)

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

OpenSSL PEM converteren

  • PEM converteren naar DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • PEM converteren naar P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • Converteer PEM naar PFX

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

OpenSSL Convert Der

  • Converteer der naar PEM

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

OpenSSL Converteer P7B

  • Converteer P7B naar PEM

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
  • Converteer P7B naar 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 Converteer PFX

  • Converteer PFX naar PEM

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

Genereer RSA-toetsen door openssl

  • Met OpenSSL op de opdrachtregel hoeft u eerst een publieke en privésleutel te genereren, moet u dit bestand beveiligen met behulp van het -passout-argument, er zijn veel verschillende vormen die dit argument kan duren OpenSSL-documentatie over dat.

    openssl genrsa -out private.pem 1024
    
  • Hiermee wordt een sleutelbestand met de naam Private.pem gemaakt dat 1024 bits gebruikt. Dit bestand heeft eigenlijk zowel de particuliere als de openbare sleutels, dus u moet het publiek uit dit bestand extraheren:

    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
    

    Je hebt nu public.pem met alleen je openbare sleutel, je kunt deze vrij delen met derden.
    Je kunt het allemaal testen door zelf iets te versleutelen met je openbare sleutel en vervolgens te ontsleutelen met je privésleutel, eerst hebben we wat gegevens nodig om te versleutelen:

  • Voorbeeldbestand :

    echo 'too many secrets' > file.txt
    
  • Je hebt nu wat gegevens in file.txt, laat het versleutelen met OpenSSL en
    de openbare sleutel:

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • Hiermee wordt een versleutelde versie van file.txt gemaakt die deze file.ssl noemt, als
    je kijkt naar dit bestand, het is gewoon binaire rommel, niets erg nuttigs om
    iedereen. Nu kunt u het ontsleutelen met de privésleutel:

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • Je hebt nu een niet-versleuteld bestand in decrypted.txt:

    cat decrypted.txt
    |output -> too many secrets
    

RSA-TOOLS-opties in OpenSSL

  • NAAM

    rsa – RSA-sleutelverwerkingstool

  • SYNOPSIS

    openssl rsa [-help] [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in bestandsnaam] [-passin arg] [-out bestandsnaam] [-passout arg] [-aes128 ] [-aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idee] [-tekst] [-noout] [-modulus] [-check] [ -pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine-id]

  • BESCHRIJVING

    Het rsa-commando verwerkt RSA-sleutels. Ze kunnen worden omgezet tussen verschillende vormen en hun componenten worden afgedrukt. Merk op dat deze opdracht het traditionele SSLeay-compatibele formaat gebruikt voor versleuteling van privésleutels: nieuwere toepassingen zouden het veiligere PKCS#8-formaat moeten gebruiken met het hulpprogramma pkcs8.

  • OPDRACHTOPTIES

    -help
    

    Druk een gebruiksbericht af.

    -inform DER|NET|PEM
    

    Dit specificeert het invoerformaat. De DER-optie gebruikt een ASN1 DER-gecodeerde vorm die compatibel is met de PKCS#1 RSAPrivateKey- of SubjectPublicKeyInfo-indeling. Het PEM-formulier is het standaardformaat: het bestaat uit het DER-formaat base64 gecodeerd met extra kop- en voettekstregels. Bij invoer worden ook privésleutels in PKCS#8-formaat geaccepteerd. Het NET-formulier is een formaat dat wordt beschreven in de sectie OPMERKINGEN.

    -outform DER|NET|PEM
    

    Dit specificeert het uitvoerformaat, de opties hebben dezelfde betekenis als de -inform optie.

    -in filename
    

    Dit specificeert de invoerbestandsnaam waaruit een sleutel moet worden gelezen of standaardinvoer als deze optie niet is opgegeven. Als de sleutel versleuteld is, wordt er om een wachtwoord gevraagd.

    -passin arg
    

    de wachtwoordbron van het invoerbestand. Voor meer informatie over het formaat van arg, zie de sectie WACHTZIN ARGUMENTEN in openssl.

    -out filename
    

    Dit specificeert de naam van het uitvoerbestand waarnaar een sleutel moet worden geschreven, of standaarduitvoer als deze optie niet is opgegeven. Als er coderingsopties zijn ingesteld, wordt er om een wachtwoordzin gevraagd. De naam van het uitvoerbestand mag niet hetzelfde zijn als de naam van het invoerbestand.

    -passout password
    

    De wachtwoordbron van het wachtwoordbestand. Raadpleeg voor meer informatie over het formaat van ARG het gedeelte Pass Phrase Argumenten in OpenSSL.

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

    Deze opties versleutelen de privésleutel met het opgegeven cijfer voordat u deze uitvoert. Er wordt een pass-uitdrukking gevraagd. Als geen van deze opties is opgegeven, wordt de sleutel in platte tekst geschreven. Dit betekent dat het gebruik van het RSA-hulpprogramma in een gecodeerde sleutel met geen enkele coderingsoptie kan worden gebruikt, kan worden gebruikt om de PASS-zin van een toets te verwijderen of door de coderingsopties in te stellen. Het kan worden gebruikt om de PASS-zin toe te voegen of te wijzigen. Deze opties kunnen alleen worden gebruikt met PEM-indeling uitvoerbestanden.

    -text
    

    Drukt de verschillende publieke of privé-sleutelcomponenten in duidelijke tekst uit naast de gecodeerde versie.

    -noout
    

    Met deze optie wordt de uitvoer van de gecodeerde versie van de toets voorkomt.

    -modulus
    

    Met deze optie wordt de waarde van de modulus van de sleutel afgedrukt.

    -check
    

    Met deze optie controleert de consistentie van een RSA-privésleutel.

    -pubin
    

    Standaard wordt een privésleutel gelezen van het invoerbestand: met deze optie wordt in plaats daarvan een openbare sleutel gelezen.

    -pubout
    

    Standaard wordt een privésleutel uitgevoerd: met deze optie wordt in plaats daarvan een openbare sleutel uitgevoerd. Deze optie wordt automatisch ingesteld als de invoer een openbare sleutel is.

    -RSAPublicKey_in, -RSAPublicKey_out
    

    zoals -pubin en -pubout, behalve dat in plaats daarvan de indeling RSAPublicKey wordt gebruikt.

    -engine id
    

    het specificeren van een engine (door zijn unieke id-tekenreeks) zal ervoor zorgen dat rsa probeert een functionele verwijzing naar de gespecificeerde engine te verkrijgen, en het zo nodig initialiseert. De engine wordt dan als standaard ingesteld voor alle beschikbare algoritmen.

  • OPMERKINGEN

    De indeling van de PEM-privésleutel gebruikt de kop- en voettekstregels:

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

    De PEM-indeling voor openbare sleutels gebruikt de kop- en voettekstregels:

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

    De PEM RSAPublicKey-indeling gebruikt de kop- en voettekstregels:

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

    Het NET-formulier is een formaat dat compatibel is met oudere Netscape-servers en Microsoft IIS .key-bestanden, dit gebruikt ongezouten RC4 voor de codering. Het is niet erg veilig en mag daarom alleen worden gebruikt als dat nodig is.

    Sommige nieuwere versies van IIS bevatten aanvullende gegevens in de geëxporteerde .key-bestanden. Om deze met het hulpprogramma te gebruiken, bekijkt u het bestand met een binaire editor en zoekt u naar de tekenreeks “private-key”, en traceert u vervolgens terug naar de bytereeks 0x30, 0x82 (dit is een ASN1 SEQUENTIE). Kopieer alle gegevens vanaf dit punt naar een ander bestand en gebruik dat als invoer voor het rsa-hulpprogramma met de optie -inform NET.

    VOORBEELDEN

    De wachtwoordzin van een RSA-privésleutel verwijderen:

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

    Een privésleutel coderen met drievoudige DES:

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

    Een privésleutel van PEM- naar DER-indeling converteren:

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

    Om de componenten van een privésleutel af te drukken naar standaarduitvoer:

     openssl rsa -in key.pem -text -noout
    

    Om alleen het openbare deel van een privésleutel uit te voeren:

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

    Voer het openbare deel van een privésleutel uit in RSAPublicKey-indeling:

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

Antwoord 3, autoriteit 10%

Om de sleutel en het certificaat uit een pem-bestand te extraheren:

Sleutel uitpakken

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

Een andere methode om de sleutel te extraheren…

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

Alle certificaten extraheren, inclusief de CA-keten

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

Het tekstueel eerste certificaat extraheren als DER

openssl x509 -in foo.pem -outform DER -out first-cert.der

Antwoord 4, autoriteit 4%

Vereiste

opensslmoet worden geïnstalleerd.
Als Git Bashis geïnstalleerd in Windows, probeer dat dan! Alternatieve binarieszijn hier te vinden.

Stap 1: extraheer .keyuit .pem

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

Stap 2: Extraheer .crtuit .pem

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

Antwoord 5

Dit is wat ik deed op Windows.

  1. Download een ZIP-bestand met de Open SSL-exe van Google
  2. Pak het ZIP-bestand uit en ga naar de map BIN.
  3. Ga naar de adresbalk in de bakmap en typ cmd. Hierdoor wordt een opdrachtprompt opgezet in deze map.
  4. Verplaatsen / Plaats het .PEM-bestand in deze bin-map.
  5. Voer twee opdrachten uit. Men maakt het CERT en het tweede het sleutelbestand
openssl x509 -outform der -in yourPemFilename.pem -out certfileOutName.crt
openssl rsa -in yourPemFilename.pem -out keyfileOutName.key

Antwoord 6

Als u deze vraag heeft gesteld, omdat u mkcertgebruikt, is de truc dat de .pembestand de CERT en de -key.pemBestand is de sleutel.

(U hoeft niet om te zetten, gewoon uitgevoerd mkcert yourdomain.dev otherdomain.dev)


Antwoord 7

Een .crt slaat het certificaat op .. in PEM-indeling. Dus een .pem, terwijl het ook andere dingen kan hebben zoals een CSR (Certificate Signing-aanvraag), een privésleutel, een openbare sleutel of andere CERTS, wanneer het slechts een cert opslaat, is hetzelfde als een .crt.

Een PEM is een basis 64 gecodeerd bestand met een koptekst en een voettekst tussen elke sectie.

Om een ​​bepaald gedeelte te extraheren, is een PERL-script, zoals het volgende volledig geldig, maar voel je vrij om enkele van de opgeven van OpenSSL te gebruiken.

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

Waar == 1 kan worden gewijzigd in welke sectie u ooit nodig hebt. Uiteraard als u precies de koptekst en de voettekst weet, is u nodig en is er slechts een van die in het bestand (meestal het geval als u gewoon de CERT en de sleutel daar inhoudt), kunt u het vereenvoudigen:

perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem

Other episodes