while (cin >> num)
++number[num];
i < number.size()
. При чем тут n, не понятно. Ты же писал про синхронизацию клиентских ключей - а она просто не нужна, ни в отношении открытых, ни в отношении закрытых.
OVPN-сервер ничего не знает о клиентских ключах, и знать не должен
И нет ни малейшего смысла тащить PKI вместе с CA на второй сервер.
Если книга не заходит, стоит поискать другую. Можете спросить тут рекомендации по учебнику для C#.
2 месяца - слишком маленький срок, чтоб делать далеко идущие выводы.