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

StackOverflow https://stackoverflow.com/questions/663890

Вопрос

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

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

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

  • домашние каталоги пользователей находятся в /home
  • многопользовательское монтирование в /central
  • каждый пользователь имеет персональный сертификат по адресу:~/user.p12
  • пароль для персональных сертификатов:pass1234
  • пароль пользователя хранится в файле 0400 по адресу ~/password.txt.
  • хранилище доверенных сертификатов только для чтения для CA находится по адресу:/центральный/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
  • сервер отслеживания аутентифицируется с использованием сертификатов

Теперь я хочу, чтобы каждый пользователь мог просто изменить какой-либо файл, которым он владеет (например, файл ~/.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 прочитать это из пользовательского файла?)
  • Это специфично для 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, а не на вложенную JRE JDK?

Я видел Справочник по Java PKCS#11 который ссылается на следующие свойства: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.Я знаю, что это звучит как сложная настройка, но на самом деле это не должно иметь ничего общего с Eclipse, что касается настройки сертификата...на самом деле это настройка Java для пользовательских сертификатов.

Есть идеи?

Это было полезно?

Решение

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

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

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

user-home-dir/.eclipse/<идентификатор продукта>_<версия продукта>/configuration

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

Другие советы

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

System.setProperty(...);

Дайте мне знать, когда это решит вашу проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top