Обновите файл server.xml Tomcat с помощью Java

Я новичок в администрировании tomcat.

Мое требование: пользователь-администратор может загружать файл сертификата, который необходимо применить к tomcat.

в настоящее время мой tomcat server.xml, тег Connector выглядит так

<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" clientAuth="false" sslProtocol="TLS" acceptCount="100" scheme="https" secure="true" keystoreFile="${catalina.base}/conf/tomcat.p12" keystoreType="PKCS12" keystoreAlias="tomcat" keystorePass="password" SSLEnabled="true"/>

во время выполнения пользователь-администратор может загрузить новый файл сертификата .p12 вместе с паролем, используя предоставленный веб-портал. На стороне сервера мне нужно обновить keystoreFile и keystorePass аргументы Connectortag, используя java.

Так что он принимает новый файл сертификата.

В моем поиске некоторые ребята предложили использовать 2 файла server.xml. некоторые сказали отредактировать файл server.xml. в документах tomcat это упоминается, поскольку эти параметры настраиваются в системной среде и могут быть напрямую обновлены.

Я попытался обновить параметр системной среды, думая, что это простое решение, но безуспешно (возможно, я делаю неправильно).

Кроме того, я хотел бы знать, есть ли какое-либо решение, которое может применить мои изменения без перезапуска кота. Может кто-нибудь помочь мне, что является правильным подходом для этого требования.

Любые ссылки, где такое требование обрабатывается, будут полезны.


person Jayesh    schedule 24.02.2015    source источник


Ответы (1)


Это должен быть комментарий, потому что это мое предложение, а не полный ответ, но мне не хватило бы места в комментарии.

Просто чтобы убедиться. Вы хотите обновить сертификат, который используется для аутентификации вашего SSL-соединения, я спрашиваю, потому что обычно tomcat находится за apache, а ssl обрабатывается apache, а не tomcat. Если вы хотите добавить сертификат для проверки ssl для клиента (например, потому что у него есть самозаверяющий сертификат), вы не делаете этого на соединителе.

Разве не было бы проще, если бы при загрузке сертификата вы переименовывали его и всегда размещали по одному и тому же пути (и использовали тот же пароль), чтобы вам не нужно было обновлять server.xml.

Вы можете легко проверить, работает ли обновление без перезагрузки (просто замените сертификат и посмотрите, что произойдет), но я сомневаюсь в этом. Вы можете проверить исходный код реализации соединителя (просто откройте правильный, так как в настоящее время это 3 реализации) и посмотрите, сможете ли вы изменить его, чтобы вызвать обновление хранилища ключей.

И, наконец, действительно ли вы хотите предоставить такую ​​функцию. Чем менее уязвимыми являются манипуляции с вашими сертификатами, тем вы в большей безопасности.

person Zielu    schedule 24.02.2015