Ява сардины над ССЛ - PullRequest
       39

Ява сардины над ССЛ

0 голосов
/ 31 октября 2011

Я пытаюсь сардины сделать клиент webdav, но он не подключается к моему серверу https.в руководстве по использованию скажите это о ssl http://code.google.com/p/sardine/wiki/UsageGuide#SSL, но я не знаю, как обеспечить мой пользовательский Http-клиент моим хранилищем ключей.

Я получаю эту ошибку.

Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:941)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919)
    at com.googlecode.sardine.impl.SardineImpl.execute(SardineImpl.java:684)
    at com.googlecode.sardine.impl.SardineImpl.list(SardineImpl.java:339)
    at com.googlecode.sardine.impl.SardineImpl.getResources(SardineImpl.java:326)
    at sardine.main(sardine.java:15)

Как мне настроить?

Ответы [ 2 ]

1 голос
/ 23 апреля 2012

Довольно простой пример (для http://mydrive.net и Linux):

  • загрузка сертификата с mydrive.net с помощью OpenSSL
    • openssl s_client -connect webdav.mydrive.ch:443> mydrive.net.crt
  • удалить все данные, кроме между BEGIN и END (включительно) в файле mydrive.net.crt
  • создать новое хранилище ключей:
    • keytool -genkey -alias dummy -keyalg RSA -keystore /etc/ssl/certs/java/yourKeyStore.jks -keysize 2048
    • используйте безопасную фразу-пароль
    • Удалить неиспользованный сгенерированный сертификат
      • keytool -delete -alias dummy -keystore /etc/ssl/certs/java/yourKeyStore.jks
  • Импорт сертификата с mydrive.net
    • keytool -import -trustcacerts -alias mydrive.net -keystore /etc/ssl/certs/java/kyourKeyStore.jks -file ./mydrive.net.crt
  • Проверить импорт:
    • keytool -list -keystore /etc/ssl/certs/java/yourKeyStore.jks
  • добавить параметр Java для хранилища ключей
    • JAVA_OPTS = "$ JAVA_OPTS -Djavax.net.ssl.trustStore = / etc / ssl / certs / java / yourKeyStore.jks"
  • Перезапустить JVM

Теперь вы можете использовать Sardine без перезаписи или переопределения. Просто используйте

Sardine sardine = SardineFactory.begin(username, password);
List<DavResource> resources = sardine.list("https://webdav.mydrive.ch/");

Совет: Убедитесь, что вы используете правильный сертификат. MyDrive имеет несколько сертификатов, например

0 голосов
/ 31 октября 2011

Сохраните хранилище ключей в виде необработанных ресурсов, загрузите их и используйте для инициализации SSLSocketFactory .Вы можете использовать его для создания экземпляра HttpClient.Чтобы подключиться к Sardine, вам нужно переопределить метод, который они указывают в вики, чтобы вернуть настроенный экземпляр HttpClient.

...