Domanda

Come posso creare un file PEM da un certificato SSL?

Questi sono i file che ho a disposizione:

  • .crt
  • server.csr
  • server.key
È stato utile?

Soluzione

Le chiavi potrebbero già essere in formato PEM, ma appena nominato con .crt o .key.

Se il contenuto del file inizia con -----BEGIN e si può leggere in un editor di testo:

Il file utilizza base64, che è leggibile in ASCII, non formato binario. Il certificato è già in formato PEM. Basta cambiare l'estensione a .pem.

Se il file è in formato binario:

Per la server.crt, si usa

openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

Per server.key, utilizzare openssl rsa al posto di openssl x509.

Il server.key è probabile che la chiave privata, e il file .crt è l'restituita, firmato, certificato X509.

Se questo è per un server Web e non è possibile specificare il caricamento di una chiave privata e pubblica separata:

Potrebbe essere necessario concatenare i due file. Per questo uso:

cat server.crt server.key > server.includesprivatekey.pem

mi sento di raccomandare la denominazione dei file con "includesprivatekey" per aiutare a gestire i permessi si mantiene con questo file.

Altri suggerimenti

avevo bisogno di fare questo per un AWS ELB. Dopo essere stato picchiato dalla finestra di dialogo molte volte, infine, questo è ciò che ha funzionato per me:

openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem

Grazie NCZ

Edit: Come @floatingrock dice

Con AWS, non dimenticate di anteporre il nome del file con file://. Così sarà simile:

 aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/

http://docs.aws. amazon.com/cli/latest/reference/iam/upload-server-certificate.html

Un file pem contiene il certificato e la chiave privata. Essa dipende dal formato di certificato / chiave sono, ma probabilmente è semplice come questo:

cat server.crt server.key > server.pem

Inoltre, se non si vuole che chiedere una passphrase, quindi è necessario eseguire il seguente comando:

openssl rsa -in server.key -out server.key

Questa è la migliore opzione per creare file .pem

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts

Quello che ho osservato è: se si utilizza OpenSSL per generare certificati, si coglie sia la parte del testo e la parte del certificato Base64 nel file CRT. Il formato PEM rigorosa dice ( definizione wiki ) che il file deve iniziare e terminare con BEGIN e END.

  

.pem - certificato DER (Privacy Enhanced Mail) Base64 codificato,   racchiuso tra "----- BEGIN CERTIFICATE -----" e "----- END   CERTIFICATO ----- "

Così, per alcune librerie (ho incontrato questo in Java) che si aspettano rigorosa formato PEM, il CRT generata fallirebbe la validazione come un 'formato PEM non valido'.

Anche se si copia o grep le linee con BEGIN / END CERTIFICATE, e incollarlo in un file cert.pem, dovrebbe funzionare.

Ecco quello che faccio, non molto pulita, ma funziona per me, in fondo si filtra la partenza testo da BEGIN riga:

  

grep -A 1000 BEGIN cert.crt> cert.pem

Stavo cercando di andare da GoDaddy per App Engine. Che cosa ha fatto il trucco stava usando questa linea:

openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr

Esattamente come è, ma sostituendo nome con il mio nome di dominio (non che in realtà anche importava)

E ho risposto a tutte le domande relative al comune Nome / organizzazione come www.name.com

Poi ho aperto la csr, copiato, incollato a papà andare, poi scaricato, decompresso, navigato per estrarre la cartella con il terminale ed entrai:

cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt

Poi ho usato queste istruzioni dai guai con Google Apps dominio personalizzato SSL , che erano:

openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem

esattamente come è, tranne che invece di privatekey.key ho usato name.unencrypted.priv.key, e invece di www_mydomain_com.crt, ho usato name.crt

Poi ho caricato il public.pem alla console di amministrazione per il "PEM codificato certificato X.509", e caricato il private.pem per il "Unencrypted PEM codificato chiave privata RSA" ..

.. E che alla fine ha funzionato.

tentando di caricare un certificato GoDaddy per AWS ho fallito molte volte, ma alla fine è stato abbastanza semplice. Non c'è bisogno di convertire nulla a .pem. Devi solo essere sicuri di includere il certificato fascio GoDaddy nel parametro catena, per esempio.

aws iam upload-server-certificate
    --server-certificate-name mycert
    --certificate-body file://try2/40271b1b25236fd1.crt
    --private-key file://server.key
    --path /cloudfront/production/
    --certificate-chain file://try2/gdig2_bundle.crt

E per cancellare il caricamento fallito precedente si può fare

aws iam delete-server-certificate --server-certificate-name mypreviouscert
  1. Scarica il certificato dal portale provvisoria da AppleID,
  2. certificato di esportazione da portachiavi e dare nome (Certificates.p12),
  3. Apri terminale e la cartella goto in cui si salva il file indicato sopra Certificates.p12,
  4. Esegui di seguito i comandi:

    a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes,

    b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts

  5. Il file .pem pronto "pushcert.pem".
  • Apri terminale.
  • Vai alla cartella in cui si trova il certificato.
  • Esegui sotto il comando sostituendo nome con il tuo certificato.
  

openssl pkcs12 -in YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts

  • Spero che funzionerà !!
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top