Androidアプリからnode.jsベースのTLSサーバーに接続しようとしています。自己署名証明書を使用しているため、当然失敗します。
とにかく、証明書をアプリに追加して、Androidにそれを何らかの方法で信頼させることができますか?注:HTTPSを使用していません。これはTLSoverTCP接続です。
たくさん読んだ後、私は答えを思いついた。
かなり良いガイドはここにあります: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);
アプリケーションに証明書を追加することはお勧めしません。証明書の更新で問題が発生します。
あなたは見ましたか: