Come ottenere file .pem da file .key e .crt?
Domanda
Come posso creare un file PEM da un certificato SSL?
Questi sono i file che ho a disposizione:
-
.crt
-
server.csr
-
server.key
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
- Scarica il certificato dal portale provvisoria da AppleID,
- certificato di esportazione da portachiavi e dare nome (Certificates.p12),
- Apri terminale e la cartella goto in cui si salva il file indicato sopra Certificates.p12,
-
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
- 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à !!