Есть ли способ восстановить общее имя сертификата клиента из кода Java в двухстороннем соединении ssl? - PullRequest
1 голос
/ 30 мая 2011

У нас есть сервер weblogic, настроенный для запроса сертификата клиента при установлении соединения ssl с клиентом для решения веб-службы. Рукопожатие ssl работает отлично, так как мы уже настроили все, что требуется.

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

Итак: существует ли способ восстановить общее имя клиентского сертификата, используемого для стабилизации двухстороннего ssl-соединения, из кода Java, работающего на сервере с использованием сервера weblogic 10.3.3? *

[] s

1 Ответ

6 голосов
/ 30 мая 2011

Сертификат клиента можно прочитать из входящего запроса сервлета, используя вызов метода HttpServletRequest.getAttribute(String).Атрибут с именем javax.servlet.request.X509Certificate заполняется контейнером сервлета, когда он создает экземпляр объекта Request для обработки сервлетом / веб-службой.

В этом случае DN сертификата может бытьполученный из объекта X500Principal, полученный из объекта сертификата посредством вызова метода getX500Principal.Это не дает CN, но предоставит вам полное отличительное имя в указанном формате; это может быть проанализировано для предоставления CN .

Что касается доступа к объекту ServletRequest, веб-службы JAX-WS могут быть запрограммированы на чтение MessageContext , которыйразрешает доступ к базовому объекту HttpServletRequest.

...