Как настроить Java для использования пользовательских сертификатов для Eclipse?
Вопрос
Не могу поверить, что я единственный человек, столкнувшийся с этой проблемой.Я гуглил несколько часов, но безуспешно.Документация по безопасности 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(...);
Дайте мне знать, когда это решит вашу проблему.