PEM è un formato di file contenitore spesso utilizzato per la memorizzazione di chiavi crittografiche. È usato per molte cose diverse, poiché imposta semplicemente la struttura e il tipo di codifica del file che viene utilizzato per salvare alcuni dati.
Che cos'è un file PEM?
PEM è solo uno standard; contengono testo e il formato indica con cui iniziano i file PEM …
-----INIZIO <genere>-----
... e finisci con:
-----FINE <genere>-----
Tutto quello che c'è in mezzo è codificato in base64 (lettere maiuscole e minuscole, cifre, +
, e /
). Questo forma un blocco di dati che può essere utilizzato in altri programmi. Un singolo file PEM può contenere più blocchi.
Questo può essere usato per rappresentare tutti i tipi di dati, ma è comunemente usato per codificare i file chiave, come le chiavi RSA utilizzate per SSH e i certificati utilizzati per la crittografia SSL. Il file PEM ti dirà a cosa serve nell'intestazione; come esempio, potresti vedere un file PEM che inizia con ...
-----INIZIA CHIAVE PRIVATA RSA-----
... Seguito da una lunga serie di dati, qual è la vera chiave privata RSA?.
File PEM con certificati SSL
I file PEM vengono utilizzati per archiviare i certificati SSL e le chiavi private associate. Ci sono più certificati nell'intera catena SSL e funzionano in questo ordine:
- Il certificato dell'utente finale, di un'autorità di certificazione (QUELLO) assegna al tuo nome di dominio. Questo è il file che nginx e Apache usano per crittografare HTTPS.
- Fino a quattro certificati intermedi opzionali, concesso alle autorità di certificazione più piccole da autorità superiori.
- Il certificato radice, il certificato più alto della catena, autofirmata dalla CA primaria.
In pratica, Ogni certificato è elencato in un file PEM, utilizzo di blocchi separati:
-----INIZIA CERTIFICATO----- //end-user -----END CERTIFICATE----- -----INIZIA CERTIFICATO----- //intermediate -----END CERTIFICATE----- -----INIZIA CERTIFICATO----- //root -----END CERTIFICATE-----
Riceverai questi file dal tuo provider SSL per l'utilizzo sul tuo server web. Come esempio, LetsEncrypt certbot
genera i seguenti certificati, situato in /etc/letsencrypt/live/your-domain-name/
:
cert.pem chain.pem fullchain.pem privkey.pem
cert.pem
è il certificato dell'utente finale.chain.pem
è il resto della catena; per questo caso, è solo il certificato radice di LetsEncrypt.fullchain.pem
ècert.pem
echain.pem
set. Questo è il file passato a nginx con ilssl_certificate
direttiva.privkey.pem
è una chiave privata RSA generata insieme al certificato.
Possono anche usare il .crt
estensione; Se hai autofirmato un certificato con OpenSSL, otterrai un file CRT invece di PEM, anche se il contenuto rimarrà lo stesso e l'uso sarà lo stesso.
Per utilizzare i tuoi certificati, Sarà necessario passarli come parametri per il server Web. Per nginx, Si desidera specificare la proprietà ssl_certificate
(il file PEM a stringa completa), e ssl_certificate_key
(il file PEM della chiave privata RSA), dopo aver abilitato SSL:
ssl_certificate /etc/letsencrypt/live/tuodominio/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/tuodominio/privkey.pem;
Per Apache, Le impostazioni sono semplicemente le stesse, Ma sarà necessario utilizzare il comando SSLCertificateFile
e SSLCertificateKeyFile
direttive:
SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem
File PEM con SSH
I file PEM vengono utilizzati anche per SSH. Se in qualsiasi momento hai corso ssh-keygen
usare ssh senza password, tuo ~/.ssh/id_rsa
è un file PEM, solo senza estensione.
In particolare, Amazon Web Services ti offre un file PEM che contiene una chiave privata ogni volta che crei una nuova istanza, e devi utilizzare questa chiave per poter eseguire l'SSH in nuove istanze EC2.
IMPARENTATO: Come aggiungere il tuo file EC2 PEM al tuo portachiavi SSH
Devi usare il -i
bandiera con ssh
per specificare che si desidera utilizzare questa nuova chiave invece di id_rsa
:
ssh -i keyfile.pem root@host
Questo ti permetterà di accedere al server normalmente, ma dovrai specificare questo flag ogni volta.
Un metodo più semplice è aggiungere la chiave privata al tuo agente ssh con ssh-add
:
ssh-add keyfile.pem
Nonostante questo, questo non persiste al riavvio, quindi dovrai eseguire questo comando all'avvio o aggiungerlo al tuo portachiavi macOS.
In ogni caso, inoltre puoi semplicemente aggiungere la tua chiave pubblica primaria all'istanza ~/.ssh/authorized_keys
dopo aver effettuato l'accesso una volta, ma questo metodo dovrebbe funzionare immediatamente per eventuali nuove istanze in futuro.
È importante notare che dovresti comunque bloccare il tuo server SSH anche se stai usando le chiavi tu stesso..
IMPARENTATO: Che cos'è l'inoltro dell'agente SSH e come viene utilizzato??