Ваше рукопожатие называется установление ключа . Рукопожатие используется для (онлайн) видов транспорта, и я не думаю, что вы разрабатываете это. Вместо этого я бы использовал хранилище ключей PKCS # 12, JKS вроде бы не рекомендуется. Основная идея использования char[]
для пароля заключается в том, что вы можете удалить его содержимое непосредственно после его использования, поэтому использование String
в качестве ввода не является хорошей идеей. Строки обычно интернированы и всегда неизменны в Java, поэтому вы не можете уничтожить их без уродливых хаков с использованием собственного кода.
Доверенные сертификаты ничем не отличаются от ненадежных сертификатов , Да, вы можете извлечь из него ключ publi c. Закрытые ключи обычно хранятся вместе с цепочкой сертификатов, ведущей к конечному пользовательскому сертификату, которому принадлежит закрытый ключ. Однако закрытый ключ не является частью сертификата, и поэтому вы не можете получить закрытый ключ из него. Это нормально, хотя закрытые ключи должны быть установлены в том месте, где они необходимы; нет необходимости транспортировать их, кроме как для целей резервного копирования.
Как вы можете отправить сертификат получателю, зависит от вас. Самое сложное - заставить получателя доверять сертификату. Допустимо использовать заранее установленный ключ, такой как доверенный ключ PGP. Если у вас нет такого ключа, значит, у вас проблемы. Что вы можете сделать, так это использовать другие методы для установления доверия sh. Пусть собеседник позвонит вам, а затем удостоверится в правильности отпечатка пальца сертификата (в основном это просто га sh над сертификатом), возможно, один из самых простых способов. Если вы хотите, чтобы ваши пользователи были не слишком далеко, конечно, это возможно и лично. Если вы не можете доверять тому, кто находится на другой стороне, то установить полное доверие, очевидно, невозможно.