存储私钥是否可以安全?

时间:2017-06-28 19:27:43

标签: java ssl public-key-encryption private-key jks

这个问题是关于我的一个项目。我在我的Raspberry Pi上运行了一个服务器端应用程序,而客户端应用程序应该在我所有其他设备上分发。以下exzerpt显示了客户端的代码。

我一直在挖掘互联网,我收集到的是最终没有100%安全存储私钥的方法。但是,保护KeyStore中的所有密钥被认为是一种良好的做法。以下是我的解决方案,但我的问题是: KeyStore文件client.jks位于JAR内部,以及硬编码密码client.jks包含服务器端的公钥和客户端的私钥。

        KeyStore keyStore = KeyStore.getInstance("JKS");
        keyStore.load(new FileInputStream(KEYSTORE), PASSWORD.toCharArray());

        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
        keyManagerFactory.init(keyStore, PASSWORD.toCharArray());

        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
        trustManagerFactory.init(keyStore);

        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());

        SSLSocket connection = (SSLSocket) sslContext.getSocketFactory().createSocket("localhost", 6789);
        System.out.println("Connection successful!");

字符串KEYSTOREPASSWORD包含KeyStore文件和密码,两者都是硬编码的。 这真的是最好的做法还是我错过了什么?为每个连接创建的新SecureRandom对象是否足以使连接安全?

致以最诚挚的问候,谢谢你的回答!

0 个答案:

没有答案