java sardine over ssl

我正在尝试沙丁鱼做一个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)

我如何设置?


很简单的例子(http://mydrive.net和Linux):

  • 使用OpenSSL从mydrive.net下载证书
  • openssl s_client -connect webdav.mydrive.ch:443> mydrive.net.crt
  • 删除mydrive.net.crt文件中除BEGIN和END(含)之外的所有内容
  • 生成一个新的密钥库:
  • 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 = SardineFactory.begin(username, password);
    List<DavResource> resources = sardine.list("https://webdav.mydrive.ch/");
    

    提示:确保使用正确的证书。 例如MyDrive有几个证书


    将密钥库存储为原始资源,加载它们并使用它们初始化SSLSocketFactory。 你可以用它来实例化一个HttpClient 。 要插入沙丁鱼,您需要覆盖他们在Wiki中指定的方法以返回您的自定义HttpClient实例。

    链接地址: http://www.djcxy.com/p/31161.html

    上一篇: java sardine over ssl

    下一篇: Android 2.3.4 SSL problem