我正在使用 java 的 SSLSocket 将 android 应用程序安全地连接到服务器。证书位于信任库中。但是连接似乎需要信任库的密码,因此它目前被硬编码到设备中。我对 PKI 了解不多,但这似乎并不安全。我将信任库与原始资源文件夹中的应用程序捆绑在一起。是否有更好的方法来安全地允许应用程序使用 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);