In TLS, al server è richiesto di avere una chiave privata e un certificato (talvolta noto come certificato del server). Il certificato server identifica e autentica il server. Opzionalmente il cliente può avere anche la sua chiave privata e il suo certificato (di solito chiamato un certificato cliente). Se viene utilizzato un certificato cliente, identifica e autentica il client.
Sul Web, con HTTPS, in genere il server ha un certificato server ma i certificati client non vengono utilizzati. Ciò significa che il client può autenticare il server con cui sta parlando, ma il server non può autenticare il client che si sta connettendo ad esso.
Tuttavia, in molti contesti programmatici, in genere si desidera che entrambi gli endpoint si autenticano a vicenda. Pertanto, vorrai utilizzare sia i certificati server che i certificati client.
In TLS, tutti i certificati sono certificati X.509. X.509 è solo il formato dei dati.
I certificati includono una chiave pubblica e una firma da un'autorità di certificazione (CA). Sul web, in genere i siti Web hanno un certificato server che viene emesso (firmato) da Verisign o da un'altra CA ben nota. I browser Web sono dotati di un elenco di quasi 100 CA diverse, preinstallate e i siti Web più utilizzati hanno un certificato server emesso da una di queste CA. Ad esempio, Verisign è una delle CA nell'elenco di CA standard di ogni browser. Verisign ti addebita denaro, se vuoi che ti rilasciano un certificato.
L'alternativa a far firmare il cert da una CA standard è che puoi usare un certificato autofirmato: un certificato che viene emesso, non da una CA standard, ma da te (o da chiunque tu voglia). Questo non è molto diffuso sul web, perché i certificati server autofirmati fanno sì che i browser facciano apparire all'utente le finestre di dialogo che la maggior parte dei siti cerca di evitare. Tuttavia, per gli usi programmatici, i certificati autofirmati possono funzionare correttamente. E se utilizzi certificati autofirmati, non devi pagare i soldi di Verisign. Puoi trovare tutorial su come utilizzare gli strumenti da riga di comando di OpenSSL per creare i tuoi certificati autofirmati.
SSL è un sinonimo di TLS. (Tecnicamente, SSL è il nome utilizzato con diverse versioni precedenti dello standard e TLS è un nuovo nome per diverse versioni più recenti degli standard. Tuttavia molte persone usano i due termini in modo intercambiabile.)
Ti invito a leggere l' articolo di Wikipedia sul certificato di chiave pubblica per avere uno sfondo più utile.