私はAndroidの周りをケースに入れ、これを持っていなかったチュートリアルフォローをしました:私は私自身のトラストストアを持っていないAndroid経由でSSL接続にアクセスするにはどうすればよいですか?
:
System.setProperty("javax.net.ssl.trustStore", "truststore"); System.setProperty("javax.net.ssl.trustStorePassword", "password"); SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault(); try { Socket s = ssf.createSocket("192.168.2.11", 6543); PrintWriter out = new PrintWriter(s.getOutputStream()); while (true){ out.println("SSL TEST"); Log.d("DATA", "DATA SENT"); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
私は、これはいくつかの質問に沸くと思います作成したものの、チュートリアルや物事をオンラインで検索すると、作成方法はわかりません。私がそれに必要な証明書を持つためにトラストストアを作成または変更できる方法はありますか? (私はそれが何か違いがあれば、私は自己署名証明書を使用しています)
私はSSLハンドシェークでスムーズに動作させる方法を教えてください。今、私が得ているエラーは次のとおりです。
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
正に、私はそれがどういう意味を本当に理解していません。
この接続が行われるようにするには、Android搭載端末でどのような設定やファイルを変更する必要がありますか?
Android以外のテクニックを修正するのではなく、Androidの方法から始めましょう。 –
私は自分のサーバから持ってきたキーストアファイルをjdk/jre/lib/securityフォルダに置いてみました。そしてそれにマッチするようにトラストストアの場所とパスワードを変更すると、同じ例外が発生しました。 – Matt
待ち! 「Androidのやり方」とは何ですか? – Matt