Che cos'è un file PEM e come viene utilizzato?

Contenuti

Persona che sblocca il file digitale con la chiave.

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 e chain.pem set. Questo è il file passato a nginx con il ssl_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??

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.