Принуждение клиентского сокета SSL к отправке сертификата

Я пытаюсь написать клиент (фактически промежуточное программное обеспечение, которое является клиентом для объекта, но также действует как сервер для других) ... Предполагается, что в качестве клиента он взаимодействует с другим сервером (VirtualCenter VMware) и просит его сделать что-то от его имени.

Чтобы дать вам больше контекста, VirtualCenter позволяет приложению регистрироваться как расширение. зарегистрировать свой сертификат во время регистрации ( setCertificate).После этого приложение может войти в VirtualCenter, используя свой сертификат (метод loginExtensionByCertificate()), и, таким образом, не нужно хранить имя пользователя и паролей.Однако, чтобы это работало, клиент (мое приложение) должен отправить сертификат как часть своего SSL-соединения, даже если сервер (VirtualCenter) не запрашивает его специально.

Я пишу свое приложение на Java. , Создал свой собственный менеджер ключей, подключил его к моему хранилищу ключей. и указал псевдоним для использования. Затем инициализировал мой контекст ssl для использования этого диспетчера ключей. В созданных сокетах я вижу, что в их SSLContext есть мой менеджер ключей. Однако я не вижу, чтобы этот менеджер ключей когда-либо вызывался для получения сертификата. По какой-то причине сокет не чувствует необходимости отправлять сертификат.

Насколько я понимаю, сервер может запросить у клиента сертификат. В данном случае этого не происходит.Что мне интересно, есть ли способ заставить созданный сокет представить сертификат независимо от того, запрашивает ли его сервер.

5
задан Sergey Maksimenko 7 July 2015 в 14:32
поделиться