Генерация пары ключей требует сильного генератора случайных чисел (я не думаю, что он у вас есть в JavaScript) и немало вычислений (для проверки простоты). Затем, когда у вас есть пара, когда вы передаете свой открытый ключ на другую сторону, появляется возможность для атаки «человек посередине», так как при передаче открытого ключа не выполняется проверка целостности.
Вы получите защищенную передачу тому, кто имеет закрытый ключ. Из вашего вопроса не ясно, клиент это или сервер. Вы можете инициализировать общий секрет, если тот, кто имеет только открытый ключ, сгенерирует общий секрет, зашифрует его и отправит тому, кто имеет открытый ключ.
Вы можете получить аналогичный набор функций (зависимость от генератора случайных чисел, уязвимость к MITM, возможность создавать общий секрет для использования в качестве ключа сеанса), но с гораздо меньшими вычислениями, выполнив вместо этого обмен ключами Диффи-Хеллмана.
Возможно, вам лучше понять, как настроить SSL на вашем сервере.