Как настроить Java для использования пользовательских сертификатов для Eclipse?

Я не могу поверить, что я единственный человек, столкнувшийся с этой проблемой. Я уже много часов гуляю и не повезло. Документация по безопасности Java, похоже, не полностью адресует сертификаты PKCS12.

Я пытаюсь настроить Java для пользовательских сертификатов PKCS12. Помимо прочего, это будет использоваться, чтобы в Eclipse я мог получить доступ к серверу Trac, который аутентифицирован через сертификаты. Я использую плагин интеграции Trac Mylyn для eclipse.

Вот настройка:

  • пользовательские домашние каталоги находятся в /home
  • многопользовательский mount at/central
  • у каждого пользователя есть персональный сертификат: ~/user.p12
  • пароль для персональных сертификатов: pass1234
  • пароль пользователя хранится в файле 0400 по адресу ~/password.txt
  • хранилище доверия только для чтения для ca находится по адресу:/central/ca.jks
  • нет пароля для магазина доверия
  • JDK 1.6 установлен на /central/jdk _1.6.0
  • Eclipse 3.4 установлен на /central/eclipse _3.4.0
  • JAVA_HOME =/центральный/jdk_1.6.0
  • JAVA_HOME устанавливается в местоположение JDK, потому что Eclipse нуждается в этом
  • eclipse_home =/центральный/eclipse_3.4.0
  • JRE живет в $JAVA_HOME/jre
  • каждый пользователь имеет файл ~/.java.policy
  • существует траковый сервер, работающий на https://trac.internal/trac
  • сервер trac аутентифицируется с использованием сертификатов

Теперь я хочу, чтобы каждый пользователь просто модифицировал некоторый файл, который у них есть (например, файл ~/.java.policy, например) и сможет запустить центральное приложение Eclipse и получить доступ к репозиторию Trac, Кажется, достаточно просто.

Прямо сейчас, единственный способ заставить это работать - отредактировать файл $ECLIPSE_HOME/eclipse.ini и добавить

-Djavax.net.ssl.keyStore="/home/user/user.p12"
-Djavax.net.ssl.keyStoreType="PKCS12"
-Djavax.net.ssl.keyStorePassword="pass1234"
-Djavax.net.ssl.trustStore="/central/ca.jks"

Хорошо, это работает, но есть две проблемы:

  • Каждый пользователь должен иметь собственную установку ecipse. (или может затмить чтение из файла пользователя?)
  • Это особенность Eclipse, в конечном итоге мне хотелось бы иметь это как конфигурацию Java.

Кроме того, я вспоминаю с некоторого времени, что вы можете редактировать файл $JAVA_HOME/jre/lib/security/java.security и добавлять

keystore=/home/user/user.p12
keystore.type=PKCS12
keystore.password=pass1234
truststore=/central/ca.jks

Но Eclipse, похоже, не подбирает это. Может быть, потому, что мой JAVA_HOME указывает на JDK, а не на JDK вложенную JRE?

Я видел Java PKCS # 11 Reference, который ссылается на следующие свойства: не keyStoreURL = "NONE" keyStoreType = "PKCS11" keyStorePasswordURL = some_pin_url

Была еще одна ссылка, которую я видел, которая сказала, что вы можете редактировать файл ~/.java.policy, чтобы включить:

keyStore "file:///home/user/user.p12", "PKCS12", "SunJSSE";
keyStorePasswordUrl "file:///home/user/password.txt";

Но это тоже не получается. Возможно, он действительно работает, и его не читают по той же причине, что файл java.security не работает, или, может быть, он просто не работает вообще.

Некоторые свойства системы, которые я видел:

javax.net.ssl.keyStore="/home/user/user.p12"
javax.net.ssl.keyStoreType="PKCS12"
javax.net.ssl.keyStorePassword="password"
javax.net.ssl.keyStoreProvider="SunJSSE"
javax.net.ssl.trustStore="/home/user/ca.jks"
javax.net.ssl.trustStoreType="JKS"
javax.net.ssl.trustStorePassword=""
javax.net.ssl.trustStoreProvider="Sun"

Итак, прямо сейчас, я думаю, я застрял в том, что у каждого пользователя есть собственный Eclipse intall. Я знаю, что это похоже на сложную настройку, но это не должно иметь ничего общего с Eclipse, поскольку настройка сертификата... это действительно настройка Java для пользовательских сертификатов.

Любые идеи?

Ответ 1

Используйте пользовательскую конфигурацию.

Настройка области частной конфигурации

Расположение по умолчанию для частной области конфигурации:

пользовательского домашнего DIR/.eclipse/< продукт-ID > _ < продукт-версия > /конфигурации

Пользовательский домашний каталог определяется свойством system.home пользователя. Идентификатор продукта и версия получены из файла маркера продукта .eclipseproduct под установкой Eclipse.

Ответ 2

вы можете сохранить всю эту информацию в файл и прочитать ее и установить каждую переменную в коде, используя:

System.setProperty(...);

Сообщите мне, когда это решает вашу проблему.