Java: Loading SSL Keystore via a resource

后端 未结 5 1770
情深已故
情深已故 2020-12-02 19:15

If I have:

System.setProperty(\"javax.net.ssl.keyStore\", \'/etc/certificates/fdms/WS1001237590._.1.ks\');
System.setProperty(\"javax.net.ssl.keyStorePasswor         


        
5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-02 19:56

    I had similar problem, I solved creating a function that returns an SSL context using a keystore coming from and input stream.

       protected SSLContext getSslCtx(InputStream is, String password) {
        try {
            // Load keystore
            KeyStore keystore = KeyStore.getInstance("JKS");
            keystore.load(is, password.toCharArray());
    
            // Load trust manager
            TrustManagerFactory trustMgrFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            trustMgrFactory.init(keystore);
    
            // Load key manager
            KeyManagerFactory keyMgrFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            keyMgrFactory.init(keystore, password.toCharArray());
    
            // Create SSL context
            SSLContext ctx = SSLContext.getInstance("TLSv1.2");
            ctx.init(keyMgrFactory.getKeyManagers(), trustMgrFactory.getTrustManagers(), null);
            return ctx;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    

    Hope this helps.

提交回复
热议问题