Я не могу поверить, что я единственный человек, столкнувшийся с этой проблемой. Я уже много часов гуляю и не повезло. Документация по безопасности 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 для пользовательских сертификатов.
Любые идеи?