make a connection with www.google.com, how will it provide a public certificate(self signed) to my browser?
Sembra che tu sia confuso su come funziona SSL / TLS.
Google è forse un cattivo esempio da scegliere: è un'autorità di certificazione che può emettere certificati riconosciuti dalla maggior parte dei browser. Quindi tutti i suoi certificati sono autofirmati.
Se hai creato un certificato client, questo non ha alcun impatto sul modo in cui il servizio di google presenta i suoi certificati.
Il certificato del client ha rilevanza solo quando ci si connette a un servizio che si aspetta di vedere un certificato client. Pur essendo ampiamente utilizzato all'interno e tra organizzazioni, non sono a conoscenza di servizi pubblici che utilizzano certificati privati.
A meno che tu non abbia una sorta di relazione con il fornitore di servizi e il loro servizio sia specificamente configurato per gestire i certificati client, il tuo certificato verrà ignorato.
Per quanto riguarda il caso in cui un fornitore ha affermato di aspettarsi e in grado di gestire i certificati client, sarebbe molto insolito (vale a dire incompetente) che investa qualsiasi fiducia in un certificato autofirmato a meno che
- hai apportato alcune disposizioni per fornire loro la chiave pubblica del certificato o il certificato di firma tramite un canale sicuro,
- OPPURE una registrazione successiva (ad es. effettuare un pagamento) utilizzando la connessione protetta dal certificato client che costituisce quindi la base del trust