Androidアプリケーションをサーバーに安全に接続するためにJavaのSSLSocketを使用しています。証明書はトラストストアにあります。ただし、トラストストアへのパスコードは接続に必要なようで、現在デバイスにハードコードされています。PKI についてはよくわかりませんが、安全ではないようです。私はトラストストアを raw リソース フォルダー内のアプリケーションにバンドルしています。アプリケーションが TLS を使用してサーバーに安全に接続できるようにするためのより良い方法はありますか? 私はTLS / SSLに非常に慣れていないので、助けや推奨事項をいただければ幸いです。
これがコードのクライアント側です。
store = KeyStore.getInstance("BKS");
InputStream in = appcontext.getResources().openRawResource(R.raw.truststore);
store.load(in, "PASSWORD".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
tmf.init(store);
sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, tmf.getTrustManagers(), new SecureRandom());
SSLSocketFactory sslsocketfactory = sslcontext.getSocketFactory();
// connect to socket
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(
"192.168.1.16", 9999);