Как создать SSLEngine из списка<X509Certificate>

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;
    

1 ответ

Вы не Вы создаете:

  1. SSLContext
  2. KeyStore, который вы загружаете с вашей цепочкой сертификатов.
  3. TrustManager, который вы инициализируете с помощью (2).
  4. TrustManagerFactory,

Затем вы инициализируете свой SSLContext с вышеизложенным, то вы создаете SSLEngine из `SSLContext.

Тем не менее SSLEngine не для слабонервных, и если вы еще не знаете всего вышеперечисленного и многое другое, вы должны действительно идти, прежде чем бежать с помощью SSLSocket а также SSLServerSocket, который вы создаете через соответствующие фабрики, получает от SSLContext,

Другие вопросы по тегам