Java | Apache Tomcat 9 | Считывание хранилища ключей из памяти

#java #ssl #keystore #tomcat9

Вопрос:

Есть ли способ в Apache Tomcat 9 (Java) прочитать хранилище ключей для шифрования SSL из переменной, то есть без необходимости сохранять хранилище ключей в файл, а затем указывать путь к файлу как свойство?

На данный момент я передаю хранилище ключей в Apache, как следующий код:

 Connector connector = new Connector();
connector.setScheme("https");
connector.setProperty("keyAlias", "alias-test");
connector.setProperty("keystorePass", "testpwd");
connector.setProperty("keystoreType", "PKCS12");
connector.setProperty("keystoreFile", "keystore.pfx");
 

Ответ №1:

Чтобы использовать уже настроенный KeyStore , вам необходимо использовать соответствующие методы настройки, которые, начиная с Tomcat 8.5, являются:

Это подводит итог чему — то вроде этого:

        final KeyStore trustStore = ...
       final KeyStore keyStore = ...
       // Certificate
       final SSLHostConfigCertificate certificate = new SSLHostConfigCertificate();
       certificate.setCertificateKeystore(keyStore);
       certificate.setCertificateKeyAlias("mykey");
       certificate.setCertificateKeyPassword("secret");
       // Host SSL configuration
       final SSLHostConfig sslHostConfig = new SSLHostConfig();
       sslHostConfig.setTrustStore(trustStore);
       sslHostConfig.addCertificate(certificate);
       // Connector
       final Connector connector = new Connector();
       connector.setScheme("https");
       connector.setSecure(true);
       connector.addSslHostConfig(sslHostConfig);
       connector.setProperty("SSLEnabled", "true");