Как получить сертификат pki с Джерси / Весна? - PullRequest
0 голосов
/ 26 марта 2012

Я хотел бы получить сертификат pki, когда запрос происходит в Джерси / Весна.Я попытался сделать:

 @GET
 @Path("/testCert")
 @Produces("text/plain")
 public String testCert(@Context HttpServletRequest request)
 {
   X509Certificate[] certs = (X509Certificate[]) request
       .getAttribute("javax.servlet.request.X509Certificate");
   return "Running... \n";
 }

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

1 Ответ

4 голосов
/ 26 марта 2012

Браузер не отправит клиентский сертификат, если этого не потребует сервер, и вам обычно нужно изменить конфигурацию сервера по умолчанию для запроса клиентского сертификата.Например, в Tomcat вам нужно добавить атрибут clientAuth=true к элементу Connector, который определяет ваш прослушиватель HTTPS.Вы также можете использовать clientAuth=want* для запроса сертификата клиента, но при этом разрешить неаутентифицированное соединение.

Если ваш сервер настроен для запроса сертификата клиента, и он все еще не отправляется, то вам может потребоватьсянастроить браузер и / или сервер для доверия сертификату другого.Это особенно актуально, если вы используете самозаверяющие сертификаты - это определенно не будет работать без импорта сертификата клиента в хранилище доверия браузера.

Инструкции Tomcat SSL является хорошей отправной точкой для получения дополнительной информации, некоторые из которых не относятся к Tomcat;если вы используете другой сервер, вам, очевидно, нужно будет найти его документацию для параметров конфигурации.

Если все остальное не помогло, вы можете передать -Djavax.net.debug=ssl в командной строке, чтобы получить представление о том, что происходитна уровне SSL.

* Старые версии Tomcat использовали optional для вызова этого поведения.Обратитесь к документации для конкретной версии Tomcat, чтобы определить правильное свойство.

...