Как создать SSLEngine из списка<X509Certificate>
ACME дает вам всю цепочку сертификатов, как List<X509Certificate>
,
Как мне создать SSLEngine
из этой цепочки сертификатов?
(В идеале я хотел бы пропустить всю вещь хранилища ключей или заполнить хранилище ключей динамически для чтения во время выполнения).
РЕДАКТИРОВАТЬ: у меня есть следующий код, но
- не уверен, что псевдоним должен быть заполнен
- не уверен, почему мне нужен пароль
- не уверен, стоит ли мне использовать переменную defaultType
- JKS в порядке для 509Cert
я хочу "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 ответ
Вы не Вы создаете:
SSLContext
KeyStore
, который вы загружаете с вашей цепочкой сертификатов.TrustManager
, который вы инициализируете с помощью (2).TrustManagerFactory
,
Затем вы инициализируете свой SSLContext
с вышеизложенным, то вы создаете SSLEngine
из `SSLContext.
Тем не менее SSLEngine
не для слабонервных, и если вы еще не знаете всего вышеперечисленного и многое другое, вы должны действительно идти, прежде чем бежать с помощью SSLSocket
а также SSLServerSocket
, который вы создаете через соответствующие фабрики, получает от SSLContext
,