Molti application server Java utilizzano un keystore come repository dei propri certificati ed in generale tutte le applicazioni Java utilizzano quello fornito con il JDK stesso, vediamo cos’e’ e come lavorarci.
Un keystore è un repository di certificati di sicurezza, che può contenere le chiavi e certificati e crittografare il tutto con una password. In altre parole, un keystore è come una tabella che ha un alias che identifica un certificato ed anche il certificato stesso.
Il JDK Java ha un keystore CAC in jre/lib/security/cacerts. JDK fornisce uno strumento: keytool per manipolare le chiavi.
Un altro modo per gestire questo tipo di certificato è Portecle uno strumento grafico che può aiutare in queste operazioni.
Keytool
Keytool gestisce un keystore (database) di chiavi crittografiche, catene di certificati X.509 e certificati attendibili. Questi esempi sono per il keytool fornita con Java SE 6.
Creare una chiave privata
keytool -genkeypair -alias mycert -keyalg RSA -keysize 1024 -dname "CN=localhost,OU=Home,O=Home,L=SL,S=WS,C=LK" -keypass mypkpassword -keystore mykeystore.jks -storepass mystorepassword |
CN –> Common Name
OU –> Organizational Unit
O –> Oranization
L –> Locality
S –> State
C –> Country
Questo genera una chiave privata e lo archivia nel keystore [mykeystore.jks]. Nel caso in cui non si aveva un keystore allora il precedente comando creerà un nuovo keystore per voi con una chiave privata.
Si notino inoltre i due parametri -keypass e -storepass. -keypass è la password utilizzata per la chiave privata e -storepass è la password utilizzata per il keystore.
Vedere il contenuto di un Keystore
Questo è un esempio con il cacert fornito da Java:
root@laptop:/etc/ssl/certs/java# keytool -list -keystore cacerts |
Questo fornisce un output del tipo (la password di default del keystore è changeit):
Enter keystore password: Keystore type: JKS Keystore provider: SUN Your keystore contains 141 entries startcom_ltd, Oct 2, 2009, trustedCertEntry, Certificate fingerprint (MD5): 08:7C:58:1F:52:2B:44:B4:3B:79:CD:01:F8:C5:C3:C9 startcom_certification_authority, Oct 2, 2009, trustedCertEntry, Certificate fingerprint (MD5): 22:4D:8F:8A:FC:F7:35:C2:BB:57:34:90:7B:8B:22:16 gte_cybertrust_global_root, Oct 2, 2009, trustedCertEntry, Certificate fingerprint (MD5): CA:3D:D3:68:F1:03:5C:D0:32:FA:B8:2B:59:E8:5A:DB go_daddy_class_2_ca, Oct 2, 2009, trustedCertEntry, |
Per avere un output più dettagliato è possibile utilizzare il flag -v
Importare un Certificato
Una tra le cose più comuni è quella di importare nuovi certificati all’interno del vostro keystore.
Esempio, importare nel vostro keystore la CA principale di Verisign, è possibile ottenere il certificato principale di VeriSign da qui.
Copiare tutto il testo da lì a un nuovo file e dare come nome VeriSign-demo-root-cert.pem.
Adesso, aggiungiamolo al nostro keystore:
keytool -importcert -v -noprompt -trustcacerts -alias verisigndemocert -file verisign-demo-root-cert.pem -keystore mykeystore.jks -storepass mystorepassword |
Portecle
Portecle è un applicazione GUI per creare, gestire ed esaminare keystore, chiavi, certificati, richieste di certificati, elenchi di revoca dei certificati e altro ancora.
Per usare Portecle basta:
1. Scaricarlo da qua
2. Scompattare l’archivio scaricato.
3. Andate nella directory creata e fate partire Portecle usando il comando “java -jar portecle.jar”
Questo farà partire la Gui di Portecle da dove si può aprire un keystore, esaminare un certificato o esportarne uno e fare altre cose molto più facilmente che con il comando keytool.
Riferimenti:
http://blog.facilelogin.com/2008/03/keystore-management-part-i.html
http://portecle.sourceforge.net/
http://ykyuen.wordpress.com/2010/07/05/portecle-keystore-and-certification-manager/
Popular Posts:
- None Found
If you want to replace keytool with a GUI tool then you can also use CERTivity.
http://www.edulib.com/products/keystores-manager/
It can handle different types of keystores (JKS, JCEKS, PKCS12, BKS, UBER, Windows) and digital signatures.
How to check the actual file location, by actual i mean .pem file