Come configurare Java per utilizzare certificati specifici dell'utente per Eclipse?
Domanda
Non riesco a credere di essere l'unica persona a dover affrontare questo problema. Ho cercato su google per ore e non ho avuto fortuna. La documentazione sulla sicurezza di Java non sembra affrontare a fondo i certificati PKCS12.
Sto provando a configurare Java per i certificati PKCS12 specifici dell'utente. Tra l'altro, questo verrà utilizzato in modo che, in Eclipse, sia possibile accedere a un server Trac autenticato tramite certificati. Sto utilizzando il plug-in di integrazione Trac Mylyn per eclipse.
Ecco l'installazione:
- le home directory degli utenti sono in / home
- montaggio multiutente su / central
- ogni utente ha un certificato personale su: ~ / user.p12
- la password per i certificati personali è: pass1234
- la password dell'utente è memorizzata in un file 0400 in ~ / password.txt
- un trust store di sola lettura per il ca è su: /central/ca.jks
- nessuna password per il truststore
- JDK 1.6 installato in /central/jdk_1.6.0
- Eclipse 3.4 installato in /central/eclipse_3.4.0
- JAVA_HOME = / centrale / jdk_1.6.0
- JAVA_HOME è impostato sulla posizione JDK perché Eclipse ne ha bisogno
- ECLIPSE_HOME = / centrale / eclipse_3.4.0
- JRE vive a $ JAVA_HOME / jre
- ogni utente ha un file ~ / .java.policy
- esiste un server trac in esecuzione su https: //trac.internal/trac
- il server trac esegue l'autenticazione usando i certificati
Ora, voglio essere in grado di fare in modo che ciascun utente modifichi semplicemente alcuni file di sua proprietà (come il file ~ / .java.policy, ad esempio), e sia in grado di avviare l'applicazione Eclipse centrale e accedere al repository Trac . Sembra abbastanza semplice.
Al momento, l'unico modo per farlo funzionare è modificare il file $ ECLIPSE_HOME / eclipse.ini e aggiungere
-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"
Ok, funziona, ma ci sono due problemi:
- Ogni utente deve avere la propria installazione di ecipse. (o può eclissare leggerlo da un file utente?)
- È specifico di Eclipse, alla fine mi piacerebbe avere questo come configurazione Java.
Inoltre, ricordo da tempo che è possibile modificare il file $ JAVA_HOME / jre / lib / security / java.security e aggiungere
keystore=/home/user/user.p12
keystore.type=PKCS12
keystore.password=pass1234
truststore=/central/ca.jks
Ma Eclipse non sembra raccoglierlo. Potrebbe essere perché il mio JAVA_HOME punta a un JDK e non al JRE annidato del JDK?
Ho visto Riferimento Java PKCS # 11 che fa riferimento alle seguenti proprietà: & KeyStoreURL = quot; & NONE quot; keystoreType = quot &; & PKCS11 quot; keyStorePasswordURL = some_pin_url
C'è stato un altro riferimento che ho visto che diceva che potresti modificare il file ~ / .java.policy per includere:
keyStore "file:///home/user/user.p12", "PKCS12", "SunJSSE";
keyStorePasswordUrl "file:///home/user/password.txt";
Ma neanche quello viene raccolto. Forse funziona davvero e non viene letto per lo stesso motivo per cui il file java.security non funziona, o forse non funziona affatto.
Alcune proprietà di sistema che ho visto:
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"
Quindi, in questo momento, credo di essere bloccato con il fatto che ogni utente abbia il proprio intall Eclipse. So che sembra una configurazione complicata, ma questo non dovrebbe avere nulla a che fare con Eclipse per quanto riguarda la configurazione del certificato ... è davvero una configurazione Java per certificati specifici dell'utente.
Qualche idea?
Soluzione
Usa a configurazione specifica dell'utente .
Impostazione della posizione dell'area di configurazione privata
Il percorso predefinito per un'area di configurazione privata è:
user-home-dir / .eclipse / lt &; ID prodotto gt &; _ Lt &; Product-version gt &; / Configurazione
La directory home dell'utente è determinata dalla proprietà di sistema Java user.home. L'ID e la versione del prodotto sono ottenuti dal file marcatore del prodotto .eclipseproduct nell'installazione di Eclipse.
Altri suggerimenti
è possibile archiviare tutte queste informazioni in un file e leggere da esso e impostare ogni variabile nel codice utilizzando:
System.setProperty(...);
Fammi sapere quando questo risolve il tuo problema.