1

イワシで webdav クライアントを作成しようとしていますが、https サーバーに接続しません。使用ガイドでは、ssl http://code.google.com/p/sardine/wiki/UsageGuide#SSLについてこれを述べていますが、カスタム HTTP クライアントにキーストアを提供する方法がわかりません。

このエラーが発生します。

スレッド「メイン」の例外 javax.net.ssl.SSLPeerUnverifiedException: ピアが認証されていません
    com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates (不明なソース) で
    org.apache.http.conn.ssl.AbstractVerifier.verify (AbstractVerifier.java:128) で
    org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397) で
    org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148) で
    org.apache.http.impl.conn.AbstractPoolEntry.open (AbstractPoolEntry.java:149) で
    org.apache.http.impl.conn.AbstractPooledConnAdapter.open (AbstractPooledConnAdapter.java:121) で
    org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573) で
    org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java:425) で
    org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:820) で
    org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:941) で
    org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:919) で
    com.googlecode.sardine.impl.SardineImpl.execute (SardineImpl.java:684) で
    com.googlecode.sardine.impl.SardineImpl.list (SardineImpl.java:339) で
    com.googlecode.sardine.impl.SardineImpl.getResources (SardineImpl.java:326) で
    sardine.main(sardine.java:15)

どうすれば設定できますか?

4

2 に答える 2

1

非常に単純な例 ( 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 ダミー -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には、たとえばいくつかの証明書があります

于 2012-04-23T11:12:08.317 に答える
0

キーストアを生のリソースとして保存し、ロードしてSSLSocketFactoryを初期化するために使用します。それを使用してインスタンス化することができますHttpClient。Sardine にプラグインするには、Wiki で指定されているメソッドをオーバーライドして、カスタマイズされたHttpClientインスタンスを返す必要があります。

于 2011-10-31T02:22:59.383 に答える