0

acme 为您提供整个证书链作为List<X509Certificate>.

如何SSLEngine从该证书链创建?

(理想情况下,我希望跳过整个密钥库动态填充密钥库以在运行时读取)。

编辑:我有以下代码,但

  1. 不确定应该填写什么别名
  2. 不知道为什么我需要密码
  3. 不确定我是否应该使用变量 defaultType
  4. JKS 是否适合 509Cert
  5. 我想要“TLSv1.2”吗

    String defaultType = KeyStore.getDefaultType();
    
    KeyStore ks = KeyStore.getInstance("JKS");
    
    ks.setCertificateEntry(alias, cert);
    
    SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
    
    //****************Server side specific*********************
    // KeyManager's decide which key material to use.
    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmf.init(ks, passphrase);
    sslContext.init(kmf.getKeyManagers(), null, null);      
    //****************Server side specific*********************
    
    SSLEngine engine = sslContext.createSSLEngine();
    engine.setUseClientMode(false);
    
    return engine;
    
4

1 回答 1

3

你没有。您创建:

  1. 一个SSLContext
  2. A KeyStore,您将其与证书链一起加载。
  3. A TrustManager,您使用 (2) 对其进行初始化。
  4. 一个TrustManagerFactory

然后你SSLContext用上面的初始化你,然后你SSLEngine从`SSLContext.

但是,这SSLEngine不适合胆小的人,如果您还不了解以上所有内容,并且还没有更多知识,那么您应该在跑步之前真正走路,使用SSLSocketand SSLServerSocket,您通过适当的工厂从SSLContext.

于 2018-07-16T06:05:50.483 回答