17

Androidアプリからnode.jsベースのTLSサーバーに接続しようとしています。自己署名証明書を使用しているため、当然失敗します。

とにかく、証明書をアプリに追加して、Androidにそれを何らかの方法で信頼させることができますか?注:HTTPSを使用していません。これはTLSoverTCP接続です。

4

2 に答える 2

17

たくさん読んだ後、私は答えを思いついた。

かなり良いガイドはここにあります:http://nelenkov.blogspot.no/2011/12/using-custom-certificate-trust-store-on.html

今、私はHTTPSを使用していないので、新しいキーストアでクリーンなSSLソケットを取得するための少し異なるアプローチを考え出す必要がありました。

KeyStore store = KeyStore.getInstance("BKS");
InputStream truststore = mainActivity.getResources().openRawResource(R.raw.trust);
store.load(truststore, "PASSWORD".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
tmf.init(store);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), new SecureRandom());
Socket socket = context.getSocketFactory().createSocket(ip, port);
于 2012-08-27T23:26:55.980 に答える
7

アプリケーションに証明書を追加することはお勧めしません。証明書の更新で問題が発生します。

あなたは見ましたか:

Androidでの自己署名SSLの受け入れ

Androidと自己署名サーバー証明書を使用したHTTPSGET(SSL)

于 2012-08-22T15:02:16.907 に答える