2012-06-28 4 views
1

Я пытаюсь получить двухстороннюю аутентификацию SSL, работающую для клиента веб-службы JAX-WS в Google App Engine.Могу ли я установить свойство Keystore с помощью URL-адреса?

Я относительно уверен, что я могу установить секретный ключ клиента путем литья в BindingProvider и установка javax.net.ssl.keystore свойства, например, так:

WebServicePortType service = new WebService().getWebServicePort(); 
((BindingProvider) service).getRequestContext().put("javax.net.ssl.keyStore", "client_cert.p12" 

Все примеры, которые я могу найти предположить client_cert.p12 быть файл на локальной файловой системы.

Поскольку мы находимся в Google App Engine, нам запрещено напрямую обращаться к файловой системе.

Будет ли этот контекст принимать URL-адрес для хранилища ключей? Если нет, могу ли я установить хранилище ключей в веб-службе, которая не требует доступа к файловой системе?

Благодаря

Edit:

SSLSocketFactory, SSLContext, KeyManager и KeyManagerFactory все не допускаются на GAE.

+0

Можно ли создать файл в GAE? – Santosh

+0

В этой документации это звучит так, как будто я могу: https://developers.google.com/appengine/kb/java#readfile, но я все еще не уверен, как установить свойство javax.net.ssl.keystore , Все примеры, которые я нахожу, определяют имя файла String в качестве назначаемого значения. – Cuga

ответ

2

I Googled и получил следующее обходное решение от here.

  1. прочитать файл хранилища как поток ресурсов: MyClass.class.getClassLoader() getResourceAsStream (jarCertFile);.
  2. записать его в локальный файл
  3. установить свойство keystore в локальный файл, System.setProperty ("javax.net.ssl.keyStore", trustStore);

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

EDIT:

Эта работа вокруг предполагает, что файл хранилища ключей поставляется в вашем архиве приложения.

+0

Только что выяснили, что нам больше не нужно это делать, поэтому я не могу проверить, работает ли он (нет сервера, чтобы попасть), но я буду +1, поскольку похоже, что он должен сделать трюк. Я скоро вернусь к ответу, если кто-то еще этого потребует от нас. Спасибо за вашу помощь! – Cuga

+0

На самом деле, этот подход не будет работать на GAE, так как вам НЕ разрешено записывать файлы. Вероятно, документация изменилась с момента опубликования этого ответа. – p91paul

Смежные вопросы