Как настроить Java для использования пользовательских сертификатов для Eclipse? - PullRequest
9 голосов
/ 19 марта 2009

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

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

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

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

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

Я видел 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 для пользовательских сертификатов.

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 19 марта 2009

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

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

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

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

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

0 голосов
/ 29 августа 2011

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

System.setProperty(...);

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

...