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