Как указать псевдоним в системном свойстве при создании 2way SSL con? - PullRequest
2 голосов
/ 14 июля 2010

Я пытаюсь запустить Java-клиент с 2way SSL, который использует CAC-карту в качестве хранилища ключей для клиента.Я добавил следующее системное свойство в свою клиентскую программу, чтобы оно работало, и изменил файл java.security, добавив провайдера pcks11.

System.setProperty("javax.net.ssl.keyStoreType", "pkcs11");
System.setProperty("javax.net.debug", "ssl");

Программа работает нормально и рукопожатие успешно выполнено.Но проблема в том, что когда у меня есть несколько доверенных сертификатов на карте CAC, он принимает сертификат по умолчанию.Я хочу указать сертификат, который должен использоваться для аутентификации клиента, возможно, указать псевдоним.Я не нашел никакого системного свойства, чтобы сделать это.Пожалуйста, дайте мне знать, как указать псевдоним в качестве системного свойства, чтобы 2way SSL использовал указанный псевдоним для аутентификации клиента или есть какой-либо другой способ указать псевдоним.Как и в случае, когда я получаю доступ к URL-адресу сервера из любого браузера, я получаю приглашение на выбор сертификата, и соединение устанавливается с выбранным сертификатом.

Спасибо заранее,

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Поскольку в свойствах java ssl нет определенного свойства, лучше искать другую существующую реализацию keymanager, которая поддерживает это, или написать собственный настраиваемый keymanager, чтобы можно было выбрать конкретный сертификат с его псевдонимом.

Спасибо, Солнышко.

0 голосов
/ 14 июля 2010

Для выбора сертификата клиента реализация по умолчанию (sun.security.ssl.X509KeyManagerImpl, при условии, что вы используете Sun JRE) выбирает первый сертификат, который он может использовать для запроса.

PKCS # 11 немногоконкретный случай.Насколько я знаю, в каждом слоте будет только один закрытый ключ + цепочка сертификатов.Если в конфигурации вашего провайдера PKCS # 11 не указан слот, по умолчанию будет 0.

...