Come funziona il protocollo di connessione SSL con certificato autofirmato? [duplicare]

6

Sto usando il certificato autofirmato, ma non so come funzioni questo protocollo. Collego due app con un socket SSL e funziona perfettamente. Il server è un'app Python e il client è un'app Android. Ho creato il certificato autofirmato con openSSL, ora ho due file: la chiave privata e il certificato autofirmato. Il server utilizza tutti i file ma il client utilizza solo un certificato autofirmato.

Ho trovato molte pagine che spiegano la connessione al protocollo con certificato firmato e CA, ma nessuna con autofirmato senza CA.

Protocollo con firma:     Client Server

ClientHello                  -------->
                                                ServerHello
                                               Certificate*
                                         ServerKeyExchange*
                                        CertificateRequest*
                             <--------      ServerHelloDone
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished                     -------->
                                         [ChangeCipherSpec]
                             <--------             Finished
Application Data             <------->     Application Data

(Questo schema è stato copiato senza vergogna dalla RFC).

Che ne dici di un certificato autofirmato?

    
posta juve164 14.06.2014 - 12:47
fonte

3 risposte

4

Nel protocollo SSL (ora chiamato TLS ), i certificati sono una scatola nera: dal punto di vista di SSL, i certificati vengono ricevuti dal server e in qualche modo la chiave pubblica da utilizzare diventa nota al client. I certificati sono una nave utilizzata per trasmettere la chiave pubblica del server al client e tutta l'attività CA è un modo per il cliente di ottenere una certa garanzia che la chiave pubblica ricevuta sia effettivamente quella corretta dal server previsto.

Quando il server utilizza un certificato autofirmato, il client non può trasferire alcun trust da una CA nota per accertarsi che il certificato autofirmato ricevuto sia la cosa autentica, e non un'imitazione da parte di qualche aggressore attivo. Tuttavia, se il client già ha conoscenza della chiave pubblica del server (ad esempio durante una fase di installazione precedente, in condizioni controllate, il certificato autofirmato del server è stato mostrato al client e il client lo ricorda) , quindi il client, per definizione, conosce la chiave pubblica del server corretto e lo utilizza.

In ogni caso, il protocollo a livello SSL è completamente invariato. Il server stills invia un messaggio Certificate e il client utilizza ancora la chiave pubblica del server per il suo messaggio ClientKeyExchange .

    
risposta data 14.06.2014 - 15:18
fonte
1

EDIT: vedere qui: Come funziona SSL / TLS? oppure Qui certificato autofirmato - come funziona

I don't undertand, when I signed the certificated by CA the protocol is this: client send Hello to Server--- Server send hello and certificate to Client--- Client verify certificate with a CA and send confirmation to Server--- Finally Server send confirmation signed to Client. – juve164 Jun 14 '14 at 12:15

What happens with a self-signed certificate. Client send Hello to Server --- Server send certificate to Client and Client verify the certificate, but how??? compare if it is the same certificate??? – juve164 Jun 14 '14 at 12:23

Mettiamo un po 'di prospettiva su questo. Certificato utente Criptografia a chiave pubblica. Ciò significa che una chiave pubblica e una chiave privata sono generate simultaneamente e sono unite matematicamente. Solo questa chiave privata funziona con questa chiave pubblica e viceversa.

Quando si introduce un certificato, non è altro che un "foglio di carta con una firma". Quella firma è dalla chiave privata. Questo fornisce solo un riferimento per la chiave utilizzata; aka google.com.

TLS Handshake:

C ClientHello: questo è l'inizio, stiamo parlando con un server in modo che possiamo avviare il processo TLS.

S ServerHello: il server risponde per confermare che stiamo parlando in TLS ora.

S Certificato: Questa è una copia del certificato che è installato sul server.

S ServerKeyExchange: fa parte del protocollo utilizzato per consentire a entrambi i dispositivi di arrivare alla stessa chiave simmetrica da utilizzare dopo l'handshake TLS

S CertificateRequest: utilizzato solo se il server desidera verificare il client con un certificato. Questo può essere trasmesso come forma di autenticazione.

S ServerHelloDone: il server ha finito con l'handshake TLS.

C Certificato: fornito solo se necessario; vedi la richiesta di certificazione sopra.

C ClientKeyExchange: Questo è il compagno di ServerKeyExchange per assicurarsi che entrambe le parti abbiano una chiave simmetrica.

C CertificateVerify: parte di CertificateRequest e TLS sul lato client.

C ChangeCipherSpec: di solito è l'indicazione che abbiamo finito con tutto ed eravamo pronti per iniziare a parlare con la crittografia.

C Finito: Questa è la fine del lato client.

S ChangeCipherSpec: il server sta accettando il cipherspec.

S Finito: Tutto è fatto e ora siamo completamente crittografati.

In questo processo, il certificato inviato dal server sarà ciò che è configurato sul server. Se questo è firmato da una CA, in genere questo include il certificato di foglia (quello con il nome di dominio), l'autorità di firma immediata e il genitore di tale autorità di firma (e così via se applicabile). Pertanto, Certificate includerebbe in genere 3 certificati fisici.

Il client esamina quindi l'emittente sul certificato foglia e inizia a seguire il backup della catena. L'Intermedio ha un emittente (che è la CA principale) e quindi controllerebbe quel certificato. La CA principale è un certificato Self-Sign. È un certificato in cui la propria chiave privata ha firmato il certificato, non un'altra entità. Finché il client si fida della CA radice, si fiderà dell'intermedio, che a sua volta significa che si fiderà della foglia.

Con un certificato autofirmato sul server, viene verificato solo il certificato rilasciato dal cliente. Osserverà l'emittente del certificato e vedrà che è stato firmato da solo. Finché il client si fida di tale CA, si fiderà della connessione e continuerà.

Tutte le CA principali sono autofirmate. L'unico motivo per cui il tuo computer si fida di loro è perché sono configurati sul tuo computer.

link

    
risposta data 24.03.2017 - 17:40
fonte
0

Da Wikipedia: link

In cryptography and computer security, a self-signed certificate is an identity certificate that is signed by the same entity whose identity it certifies. This term has nothing to do with the identity of the person or organization that actually performed the signing procedure. In technical terms a self-signed certificate is one signed with its own private key.

La tua chiave privata è la tua CA.

    
risposta data 14.06.2014 - 12:58
fonte

Leggi altre domande sui tag