autenticazione SSL client file .pem e file .crt

1

Quindi ho una minima conoscenza della sicurezza, ma sono uno sviluppatore principale di un'applicazione che gestisce alcuni dati sensibili che vogliamo proteggere. L'applicazione comunica con un altro server (l'altro server è il front-end, il mio server è fondamentalmente il back-end). Il nostro esperto di sicurezza (che non è al momento disponibile) ha spiegato che abbiamo bisogno dell'autenticazione SSL reciproca per la connessione tra i server. Il nostro sysadmin ha configurato l'autenticazione lato client e mi ha dato un file .pem e ora, se qualcuno tenta di accedere all'applicazione, ottiene un errore SSL perché non sta passando l'autenticazione SSL del client. Devo dare a 1 altro sviluppatore che è in un altro stato la possibilità di accedere all'applicazione. Posso semplicemente mandargli il file .pem (ad esempio via email)? Devo creare un file .crt e inviarlo a lui? Fondamentalmente quali informazioni sono necessarie per dare all'altro sviluppatore in modo che abbia tutte le informazioni necessarie per accedere all'applicazione. Cosa c'è in un file .pem? Solo la chiave pubblica o più?

    
posta Jake 26.07.2014 - 16:29
fonte

2 risposte

4

PEM significa Privacy Enhanced Mail , ma l'acronimo è stato a lungo sopravvissuto al formato del file. Il formato "PEM" è un metodo per codificare i dati binari in testo, in modo che i dati possano sopravvivere al trasporto attraverso un mezzo che è basato sul testo e non molto attento con i dati (tipicamente le e-mail).

Fondamentalmente, PEM inizia con qualche intestazione:

-----BEGIN FOOBAR-----

seguito dalla Base64 codifica dei dati binari e da una riga del piè di pagina che segna la fine dell'elemento:

-----END FOOBAR-----

Pertanto, il formato PEM è piuttosto generico e devi guardare l'intestazione per sapere cosa hai effettivamente nel file.

Nel tuo caso, devi fare una distinzione tra il certificato e la chiave privata . Il certificato è la parte pubblica; è qualcosa che il client e il server SSL si scambiano l'un l'altro durante l'iniziale handshake. I certificati possono viaggiare via e-mail; poiché contengono solo dati pubblici e sono inoltre firmati, non necessitano di ulteriore protezione.

Le chiavi private sono un'altra impresa. Nell'handshake SSL, il client invia al server una copia del certificato (in modo che il server possa apprendere qual è la chiave pubblica del client), e quindi il client dimostra la sua padronanza della chiave privata corrispondente (internamente, viene calcolata una firma su una sfida dal server). La chiave privata è ciò che rende il client "speciale": l'attaccante non lo sa. Se l'utente malintenzionato conosceva la chiave privata, allora poteva impersonare il client e questo è esattamente ciò che si desidera evitare.

Pertanto, l'invio di una chiave privata "così com'è" via email dovrebbe davvero non accadere.

Tuttavia, nella tua situazione, vuoi che il client ("lo sviluppatore in un altro stato") ottenga sia il certificato che la chiave privata. Hai quindi bisogno di un modo per trasmettere sia il certificato che la chiave privata a quel cliente. Il solito metodo utilizza il formato PKCS # 12 , che consente la crittografia basata su password:

  • Avvolgi sia il certificato che la sua chiave privata in un file PKCS # 12 protetto con una password enorme, grassa e molto casuale.
  • Invia il file risultante (chiamato convenzionalmente ".p12" o ".pfx") al destinatario.
  • Telefona al destinatario per dargli la password, in modo che possa decrittografare il pacchetto e ottenere così il certificato e la chiave privata.

Se non c'è nessuno disponibile nella tua organizzazione, chissà che cos'è un certificato o una chiave privata, allora hai un problema. Vale a dire, che stai usando la crittografia senza comprenderla. Hai avuto un "esperto di sicurezza" ad un certo punto: riportalo indietro. La sicurezza non tollera bene l'improvvisazione.

    
risposta data 28.07.2014 - 17:58
fonte
0

Se tutto quello che hai è un file .pem per accedere al sistema, sembra che il file contenga sia il certificato che la chiave privata associata. Puoi verificarlo aprendo il file in un editor di testo e vedendo che contiene sia un "BEGIN CERTIFICATE" che un "BEGIN RSA PRIVATE KEY".

Idealmente in questa situazione avresti il tuo amministratore di sistema generare un nuovo certificato per l'altro sviluppatore. Ciò consentirebbe ad entrambi di accedere al sistema senza condividere le credenziali.

    
risposta data 26.07.2014 - 16:37
fonte

Leggi altre domande sui tag