Используйте и разрешите URL-адрес как -Djavax.net.ssl.trustStore = <url>в JAVA_OPTS PCF. - PullRequest
0 голосов
/ 17 мая 2018

Я работаю над развертыванием приложения, которое подключается к стороннему приложению через соединение SSL.Для этого ранее я использовал эти сертификаты и держал их в пакете сборки и выбирал их оттуда.Теперь из-за ограниченного количества выпуска продукции мне нужно вывести сертификаты SSL.До сих пор я выводил сертификаты, которые были выбраны из jre/lib/security/wasadm. via a SSLConnectionFactory. Но есть некоторые сертификаты, которые являются частью cacert, и их нужно выбрать из JAVA_OPTS на PCF как переменную среды, такую ​​как -Djavax.net.ssl.trustStore=<URL to a Path on Server>

КакМогу ли я использовать -D or JAVA_OPTS для того, чтобы получить оттуда хранилище trustStore.

Jdk -> 1.7xx
Target Environment -> PCF
environment OS -> Linux

Я бы хотел получить любую помощь здесь.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Я решил проблему, выбрав файл из URL-адреса и поместив его в мою войну при запуске, и, следовательно, он решил все мои проблемы.Спасибо!

0 голосов
/ 17 мая 2018

сохраните их в пакете сборки и заберите их оттуда.

Если это вообще возможно, не делайте этого. Это требует от вас форка пакета сборки, и это плохо. Это создает нагрузку на обслуживание и замедляет вашу способность развертывать обновления и исправления безопасности для приложений, работающих на Cloud Foundry.

Но есть некоторые сертификаты, которые являются частью cacert и должны быть выбраны из JAVA_OPTS на PCF в качестве переменной среды, например -Djavax.net.ssl.trustStore =

Я не уверен, почему вы будете вынуждены идти по этому пути. Параметр -Djavax.net.ssl.trustStore просто устанавливает хранилище доверия по умолчанию для JVM. Иногда это может быть удобно, но имеет свои недостатки.

Когда вам нужно доверять сертификатам, которые не подписаны известным CA, я бы посоветовал вам создать собственное хранилище доверенных сертификатов для конкретного приложения, а не добавлять дополнительные сертификаты в хранилище доверенных сертификатов JVM по умолчанию.

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

Я не знаю, какой HTTP-клиент вы используете, но есть хороший пример этого с HTTPClient здесь . См. Custom SSL context пример.

Если оставить это в стороне, если вы действительно хотите настроить хранилище доверия по умолчанию для JVM, выполняющей ваше приложение в Cloud Foundry, вам просто нужно изменить переменную среды JAVA_OPTS для вашего приложения и перезапуска.

Ex:

cf set-env my-cool-app JAVA_OPTS '-Djavax.net.ssl.trustStore=path/to/my/new/default-truststore.jks'

Я полагаю, что вы можете использовать относительный путь к вашему хранилищу доверия, например, если вы связываете его со своим приложением. Если нет, /home/vcap/app - это путь к корню вашего файла JAR / WAR, так что вы можете вставить его, если вам нужен полный путь. Это должен быть локальный путь в контейнере, хотя я не верю, что JVM поддерживает удаленные пути / URL.

Jdk -> 1.7xx

Вам действительно нужно обновить:)

...