ragazzi non facciamo confusione:
il certificato può essere firmato da CHIUNQUE, bisogna invece che il server abbia nel suo truststore (inteso come repository dei certificati) il certificato del firmatario, o meglio la catena dei certificati "firmatari" che presenta il client.

Scenario:

Client genera certificato, trusta CA1, a sua volta trustata da CA2, a sua volta trustata da CA3.
A seconda delle impostazioni del server, Client è accettato se ha CA1, CA2, CA3 oppure CA1 e CA2, oppure CA1 solo.

Ora quello che serve a lui è un modo per generare questi certificati da utilizzare per le connessioni.
Dipende da cosa ha installato nella macchina, in ambiente .NET non saprei, in ambiente java può utilizzare (senza passare per netbeans) il comando keytool (a tal proposito leggi qui )

Keytool è un comando che si trova nella cartella bin del JDK (non ti basta solo l'ambiente di esecuzione).

Altro strumento validissimo, ostico da usare, che preferisco è openssl.

Altrimenti, se hai tempo e voglia, guarda le librerie di bouncycastle (ci sono anche per .NET) e scrivi tu una tua piccola applicazione che crei la richiesta di certificato.
Ricorda che devi far firmare questa richiesta da una CA.