A few frequently used Keytool commands
keytool
does not support management of private keys inside a keystore. You need to use another tool for that. If you are using the JKS format, that means you need another java-based tool. extkeytool
from the Shibboleth distribution can do this.
- Create an empty keystore
- keytool -genkey -alias foo -keystore truststore.jks keytool -delete -alias foo -keystore truststore.jks
- Generate a private key and an initial certificate as a JKS keystore
- keytool -genkey -keyalg RSA -alias "selfsigned" -keystore KEYSTORE.jks -storepass "secret" -validity 360
- you can also pass the data for the DN of the certificate as command-line parameters:
-dname "CN=${pki-cn}, OU=${pki-ou}, O=${pki-o}, L=${pki-l}, S=${pki-s}, C=${pki-c}"
- Generate a secret key that can be used for symmetric encryption. For this to work, you need to make use of a JCEKS keystore.
- keytool -genseckey -alias "secret_key" -keystore KEYSTORE.jks -storepass "secret" -storetype "JCEKS"
- Generate a Certificate Signing Request for a key in a JKS keystore
- keytool -certreq -v -alias "selfsigned" -keystore KEYSTORE.jks -storepass "secret" -file MYCSR.csr
- Import a (signed) certificate into a JKS keystore
- keytool -import -keystore KEYSTORE.jks -storepass "secret" -file MYCERT.crt
- add a public certificate to a JKS keystore, eg the JVM truststore
- keytool -import -trustcacerts -alias "sensible-name-for-ca" -file CAcert.crt -keystore MYSTORE.jks
- If the JVM truststore contains your certificate or the certificate of the root CA that signed your certificate, then the JVM will trust and thus might accept your certificate. The default truststore already contains the root certificates of most commonly used sommercial CA's. Use this command to add another certificate for trust:
- keytool -import -trustcacerts -alias "sensible-name-for-ca" -file CAcert.crt -keystore $JAVA_HOME/lib/security/cacerts
- the default password of the Java truststore is "changeit". if $JAVA_HOME is set to the root of the JDK, then the truststore is it $JAVA_HOME/jre/lib/security/cacerts keytool does NOT support adding trust certificates to a PKCS12 keystore (which is very unfortunate but probably a good move to promote JKS)
-
- delete a public certificate from a JAVA keystore (JKS; eg JVM truststore)
- keytool -delete -alias "sensible-name-for-ca" -keystore $JAVA_HOME/lib/security/cacerts
- the default password of the Java truststore is "changeit". if $JAVA_HOME is set to the root of the JDK, then the truststore is it $JAVA_HOME/jre/lib/security/cacerts
- List the certificates inside a keystore
- keytool -list -v -keystore KEYSTORE.jks
-storetype pkcs12
can be used-
- Get information about a stand-alone certificate
- keytool -printcert -v -file MYCERT.crt
-
- Convert a JKS file to PKCS12 format (Java 1.6.x and above)
- keytool -importkeystore -srckeystore KEYSTORE.jks -destkeystore KEYSTORE.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass mysecret -deststorepass mysecret -srcalias myalias -destalias myalias -srckeypass mykeypass -destkeypass mykeypass -noprompt
No comments:
Post a Comment