Почему у java есть файлы cacerts и jssecacerts?
Я серьезно запутался в различиях между cacerts
и jssecacerts
файлами.
Я знаю, что по умолчанию java ищет файл jssecacerts
, а затем файл cacerts
.
Но какова точка файла jssecacerts
?
Мое понимание заключается в том, что если нужно использовать новую доверенность, тогда должна быть сделана копия cacerts
, и все новые доверенные ЦС должны быть добавлены к этой копии. Копия cacerts
(с новыми ЦС) должна затем ссылаться на системное свойство -Djavax.net.ssl.trustStore
. Таким образом, другие java-приложения, которые запускаются на этой машине, не будут случайно доверять CA без центра сертификации.
Ответы
Ответ 1
В Справочное руководство по расширению Java Socket Extension (JSSE), TrustManagerFactory
для поиска материала доверия используются следующие шаги:
- системное свойство
javax.net.ssl.trustStore
-
java-home/lib/security/jssecacerts
-
java-home/lib/security/cacerts
(поставляется по умолчанию)
Я думаю, что это основано на концепции конвенции над конфигурацией. Без дополнительных усилий кодирования будет использоваться cacert
. Для получения дополнительных частных сертификатов CA/Signing разработчик может использовать первый или второй способ, когда бывший может просто содержать конкретный сертификат, но позже содержит список сертификатов.
Ответ 2
Как я понимаю, файл cacerts
является отправленным по умолчанию.
Если есть файл jssecacerts
, он используется исключительно - не в дополнение к файлу cacerts
.
Моя рекомендация: сохраните файл cacerts
, скопируйте в jssecacerts
и добавьте любые частные сертификаты CA/Signing, необходимые для файла jssecacerts
.
Ответ 3
Хороший вопрос. Я думаю, что это связано с историческим фактом, что JSSE когда-то был дополнением. JSSE разрешает несколько провайдеров, поэтому, возможно, jssecacerts
предназначен только для провайдера JSSE, а другие поставщики могут использовать свои собственные.
Но кто использовал cacerts перед JSSE, это еще один вопрос.