jclouds: как предоставить собственный KeyStore при создании BlobStoreContext - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть частное хранилище больших двоичных объектов (swift) с самозаверяющим сертификатом.

Я хочу использовать это хранилище с jclouds.Теперь работает следующее:

Properties overrides = new Properties();
overrides.setProperty(Constants.PROPERTY_ENDPOINT, "https://example.com:8080/auth");
overrides.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, "true");
overrides.setProperty(Constants.PROPERTY_RELAX_HOSTNAME, "true");

BlobStoreContext context = new BlobStoreContextFactory().createContext("swift", 
    userCredentials.getIdent(), userCredentials.getSecret(), 
    ImmutableSet.<Module> of(), overrides);

Однако, поскольку у меня есть сертификат, есть ли способ сделать его более безопасным и сказать jclouds использовать этот конкретный сертификат, а не доверять любому?Я знаю, как загрузить сертификат в объект Certificate, и я также знаю, как создать объект KeyStore с сертификатом.

Мой вопрос: как мне заставить jclouds использовать мои Certificate или KeyStore для проверки сертификата?

Ответы [ 2 ]

3 голосов
/ 17 ноября 2012

В данный момент jclouds не предоставляет этот хук, поэтому вам придется изменить хранилище ключей JRE. не стесняйтесь добавлять запрос функции для этого здесь: http://code.google.com/p/jclouds/issues/entry

0 голосов
/ 04 октября 2014

Как Адриан указал мне на jclouds-user maillist, теперь это возможно, добавив такой модуль:

.modules(ImmutableSet.of(new AbstractModule(){
 @Override public void configure() {
  bind(new TypeLiteral<Supplier<SSLContext>>(){}).toInstance(new
   Supplier<SSLContext>() {
    @Override public SSLContext get() {
     return whatYouManage; // note this is called per-request so
                           //can be expensive.
     }
  }
 }
}))
...