Единственный способ сделать это - использовать общий секрет : то, что знает и клиент, и сервер, но никто другой не знает.
Открытый ключ SSL работает при условии, что сертификат (и, следовательно, пара ключей) заблокирован для конкретного сервера / домена, что может быть независимо подтверждено третьей стороной (органом, подписавшим подпись).
Как только вы избавляетесь от этой предпосылки, вы открыты для атак «человек посередине» с шифрованием с открытым ключом, потому что вы не можете гарантировать, с кем разговариваете (или, по крайней мере, вы не можете гарантировать, что кто-то не перехватывает / ретрансляция ваших сообщений).
Если вы используете общий секрет, вам не нужны открытые ключи, сертификаты или что-либо еще - но если какой-то неавторизованный участник обнаружит ваш секрет, вы облажались.