.'" t
."
." Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
."
." This code is free software; you can redistribute it and/or modify it
." under the terms of the GNU General Public License version 2 only, as
." published by the Free Software Foundation.
."
." This code is distributed in the hope that it will be useful, but WITHOUT
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
." version 2 for more details (a copy is included in the LICENSE file that
." accompanied this code).
."
." You should have received a copy of the GNU General Public License version
." 2 along with this work; if not, write to the Free Software Foundation,
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
."
." Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
." CA 95054 USA or visit www.sun.com if you need additional information or
." have any questions.
." 
." `
.TH keytool 1 "07 Aug 2006"
." Generated by html2man

.LP
.SH NAME
keytool \- Key and Certificate Management Tool
.LP
.RS 3

.LP
Manages a keystore (database) of cryptographic keys, X.509 certificate chains, and trusted certificates.
.RE
.SH "SYNOPSIS"
.LP

.LP
.nf
\f3
.fl
\fP\f3keytool\fP [ commands ]
.fl
.fi

.LP
.LP
The keytool command interface has changed in Java SE 6. See the Changes Section for a detailed description. Note that previously defined commands are still supported.
.LP
.SH "DESCRIPTION"
.LP

.LP
\f3keytool\fP is a key and certificate management utility. It allows users to administer their own public/private key pairs and associated certificates for use in self\-authentication (where the user authenticates himself/herself to other users/services) or data integrity and authentication services, using digital signatures. It also allows users to cache the public keys (in the form of certificates) of their communicating peers. 
.LP
A \f2certificate\fP is a digitally signed statement from one entity (person, company, etc.), saying that the public key (and some other information) of some other entity has a particular value. (See Certificates.) When data is digitally signed, the signature can be verified to check the data integrity and authenticity. \f2Integrity\fP means that the data has not been modified or tampered with, and \f2authenticity\fP means the data indeed comes from whoever claims to have created and signed it.
.LP
.LP
\f3keytool\fP also enables users to administer secret keys used in symmetric encryption/decryption (e.g. DES).
.LP
.LP
\f3keytool\fP stores the keys and certificates in a \f2keystore\fP. 
.LP
.SH "COMMAND AND OPTION NOTES"
.LP

.LP
.LP
The various commands and their options are listed and described below . Note:
.LP
.RS 3
.TP 2
o
All command and option names are preceded by a minus sign (\-). 
.TP 2
o
The options for each command may be provided in any order. 
.TP 2
o
All items not italicized or in braces or square brackets are required to appear as is. 
.TP 2
o
Braces surrounding an option generally signify that a default value will be used if the option is not specified on the command line. Braces are also used around the \f2\-v\fP, \f2\-rfc\fP, and \f2\-J\fP options, which only have meaning if they appear on the command line (that is, they don't have any "default" values other than not existing). 
.TP 2
o
Brackets surrounding an option signify that the user is prompted for the value(s) if the option is not specified on the command line. (For a \f2\-keypass\fP option, if you do not specify the option on the command line, \f3keytool\fP will first attempt to use the keystore password to recover the private/secret key, and if this fails, will then prompt you for the private/secret key password.) 
.TP 2
o
Items in italics (option values) represent the actual values that must be supplied. For example, here is the format of the \f2\-printcert\fP command: 
.nf
\f3
.fl
  keytool \-printcert {\-file \fP\f4cert_file\fP\f3} {\-v}
.fl
\fP
.fi
.LP
When specifying a \f2\-printcert\fP command, replace \f2cert_file\fP with the actual file name, as in: 
.nf
\f3
.fl
  keytool \-printcert \-file VScert.cer
.fl
\fP
.fi
.TP 2
o
Option values must be quoted if they contain a blank (space). 
.TP 2
o
The \f2\-help\fP command is the default. Thus, the command line 
.nf
\f3
.fl
  keytool
.fl
\fP
.fi
is equivalent to 
.nf
\f3
.fl
  keytool \-help
.fl
\fP
.fi
.RE

.LP
.SS 
Option Defaults
.LP
.RS 3

.LP
Below are the defaults for various option values. 
.nf
\f3
.fl
\-alias "mykey"
.fl

.fl
\-keyalg
.fl
    "DSA" (when using \fP\f3\-genkeypair\fP\f3)
.fl
    "DES" (when using \fP\f3\-genseckey\fP\f3)
.fl

.fl
\-keysize
.fl
    1024 (when using \fP\f3\-genkeypair\fP\f3)
.fl
    56 (when using \fP\f3\-genseckey\fP\f3 and \-keyalg is "DES")
.fl
    168 (when using \fP\f3\-genseckey\fP\f3 and \-keyalg is "DESede")
.fl

.fl
\-validity 90
.fl

.fl
\-keystore \fP\f4the file named \fP\f4.keystore\fP\f3 in the user's home directory\fP\f3
.fl

.fl
\-storetype \fP\f4the value of the "keystore.type" property in the security properties file,
.fl
           which is returned by the static \fP\f4getDefaultType\fP\f3 method in \fP\f4java.security.KeyStore\fP\f3
.fl

.fl
\-file \fP\f4stdin if reading, stdout if writing\fP\f3
.fl

.fl
\-protected false
.fl

.fl
\fP
.fi

.LP
In generating a public/private key pair, the signature algorithm (\f2\-sigalg\fP option) is derived from the algorithm of the underlying private key: If the underlying private key is of type "DSA", the \f2\-sigalg\fP option defaults to "SHA1withDSA", and if the underlying private key is of type "RSA", \f2\-sigalg\fP defaults to "MD5withRSA". Please consult the 
.na
\f2Java Cryptography Architecture API Specification & Reference\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA for a full list of \f2\-keyalg\fP and \f2\-sigalg\fP you can choose from.
.RE
.SS 
Common Options
.LP
.RS 3

.LP
The \f2\-v\fP option can appear for all commands except \f2\-help\fP. If it appears, it signifies "verbose" mode; more information will be output. 
.LP
There is also a \f2\-J\fP\f2javaoption\fP option that may appear for any command. If it appears, the specified \f2javaoption\fP string is passed through directly to the Java interpreter. This option should not contain any spaces. It is useful for adjusting the execution environment or memory usage. For a list of possible interpreter options, type \f2java \-h\fP or \f2java \-X\fP at the command line.
.LP
.LP
These options may appear for all commands operating on a keystore:
.LP
.RS 3
.TP 3
\-storetype storetype 
This qualifier specifies the type of keystore to be instantiated. 
.TP 3
\-keystore keystore 
The keystore location. 
.LP
If the JKS storetype is used and a keystore file does not yet exist, then certain \f3keytool\fP commands may result in a new keystore file being created. For example, if \f2keytool \-genkeypair\fP is invoked and the \f2\-keystore\fP option is not specified, the default keystore file named \f2.keystore\fP in the user's home directory will be created if it does not already exist. Similarly, if the \f2\-keystore \fP\f2ks_file\fP option is specified but \f2ks_file\fP does not exist, then it will be created 
.LP
Note that the input stream from the \f2\-keystore\fP option is passed to the \f2KeyStore.load\fP method. If \f2NONE\fP is specified as the URL, then a null stream is passed to the \f2KeyStore.load\fP method. \f2NONE\fP should be specified if the \f2KeyStore\fP is not file\-based (for example, if it resides on a hardware token device).  
.TP 3
\-storepass storepass 
The password which is used to protect the integrity of the keystore. 
.LP
\f2storepass\fP must be at least 6 characters long. It must be provided to all commands that access the keystore contents. For such commands, if a \f2\-storepass\fP option is not provided at the command line, the user is prompted for it. 
.LP
When retrieving information from the keystore, the password is optional; if no password is given, the integrity of the retrieved information cannot be checked and a warning is displayed.  
.TP 3
\-providerName provider_name 
Used to identify a cryptographic service provider's name when listed in the security properties file. 
.TP 3
\-providerClass provider_class_name 
Used to specify the name of cryptographic service provider's master class file when the service provider is not listed in the security properties file. 
.TP 3
\-providerArg provider_arg 
Used in conjunction with \f2\-providerClass\fP. Represents an optional string input argument for the constructor of \f2provider_class_name\fP. 
.TP 3
\-protected 
Either \f2true\fP or \f2false\fP. This value should be specified as \f2true\fP if a password must be given via a protected authentication path such as a dedicated PIN reader. 
.RE

.LP
.RE
.SH "COMMANDS"
.LP

.LP
.SS 
Creating or Adding Data to the Keystore
.LP
.RS 3

.LP
.RS 3
.TP 3
\-genkeypair {\-alias alias} {\-keyalg keyalg} {\-keysize keysize} {\-sigalg sigalg} [\-dname dname] [\-keypass keypass] {\-validity valDays} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Generates a key pair (a public key and associated private key). Wraps the public key into an X.509 v3 self\-signed certificate, which is stored as a single\-element certificate chain. This certificate chain and the private key are stored in a new keystore entry identified by \f2alias\fP. 
.LP
\f2keyalg\fP specifies the algorithm to be used to generate the key pair, and \f2keysize\fP specifies the size of each key to be generated. \f2sigalg\fP specifies the algorithm that should be used to sign the self\-signed certificate; this algorithm must be compatible with \f2keyalg\fP. 
.LP
\f2dname\fP specifies the X.500 Distinguished Name to be associated with \f2alias\fP, and is used as the \f2issuer\fP and \f2subject\fP fields in the self\-signed certificate. If no distinguished name is provided at the command line, the user will be prompted for one. 
.LP
\f2keypass\fP is a password used to protect the private key of the generated key pair. If no password is provided, the user is prompted for it. If you press RETURN at the prompt, the key password is set to the same password as that used for the keystore. \f2keypass\fP must be at least 6 characters long. 
.LP
\f2valDays\fP tells the number of days for which the certificate should be considered valid. 
.LP
This command was named \f2\-genkey\fP in previous releases. This old name is still supported in this release and will be supported in future releases, but for clarify the new name, \f2\-genkeypair\fP, is preferred going forward.  
.TP 3
\-genseckey {\-alias alias} {\-keyalg keyalg} {\-keysize keysize} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Generates a secret key and stores it in a new \f2KeyStore.SecretKeyEntry\fP identified by \f2alias\fP. 
.LP
\f2keyalg\fP specifies the algorithm to be used to generate the secret key, and \f2keysize\fP specifies the size of the key to be generated. \f2keypass\fP is a password used to protect the secret key. If no password is provided, the user is prompted for it. If you press RETURN at the prompt, the key password is set to the same password as that used for the keystore. \f2keypass\fP must be at least 6 characters long.  
.TP 3
\-importcert {\-alias alias} {\-file cert_file} [\-keypass keypass] {\-noprompt} {\-trustcacerts} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Reads the certificate or certificate chain (where the latter is supplied in a PKCS#7 formatted reply) from the file \f2cert_file\fP, and stores it in the keystore entry identified by \f2alias\fP. If no file is given, the certificate or PKCS#7 reply is read from stdin. 
.LP
\f3keytool\fP can import X.509 v1, v2, and v3 certificates, and PKCS#7 formatted certificate chains consisting of certificates of that type. The data to be imported must be provided either in binary encoding format, or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard. In the latter case, the encoding must be bounded at the beginning by a string that starts with "\-\-\-\-\-BEGIN", and bounded at the end by a string that starts with "\-\-\-\-\-END". 
.LP
You import a certificate for two reasons: 
.RS 3
.TP 3
1.
to add it to the list of trusted certificates, or 
.TP 3
2.
to import a certificate reply received from a CA as the result of submitting a Certificate Signing Request (see the \-certreq command) to that CA. 
.RE
.LP
Which type of import is intended is indicated by the value of the \f2\-alias\fP option: 
.RS 3
.TP 3
1.
\f3If the alias does not point to a key entry\fP, then \f3keytool\fP assumes you are adding a trusted certificate entry. In this case, the alias should not already exist in the keystore. If the alias does already exist, then \f3keytool\fP outputs an error, since there is already a trusted certificate for that alias, and does not import the certificate. 
.TP 3
2.
\f3If the alias points to a key entry\fP, then \f3keytool\fP assumes you are importing a certificate reply. 
.RE
\f3Importing a New Trusted Certificate\fP 
.RS 3

.LP
.LP
Before adding the certificate to the keystore, \f3keytool\fP tries to verify it by attempting to construct a chain of trust from that certificate to a self\-signed certificate (belonging to a root CA), using trusted certificates that are already available in the keystore.
.LP
.LP
If the \f2\-trustcacerts\fP option has been specified, additional certificates are considered for the chain of trust, namely the certificates in a file named "cacerts".
.LP
.LP
If \f3keytool\fP fails to establish a trust path from the certificate to be imported up to a self\-signed certificate (either from the keystore or the "cacerts" file), the certificate information is printed out, and the user is prompted to verify it, e.g., by comparing the displayed certificate fingerprints with the fingerprints obtained from some other (trusted) source of information, which might be the certificate owner himself/herself. Be very careful to ensure the certificate is valid prior to importing it as a "trusted" certificate! \-\- see WARNING Regarding Importing Trusted Certificates. The user then has the option of aborting the import operation. If the \f2\-noprompt\fP option is given, however, there will be no interaction with the user.
.LP
.RE
\f3Importing a Certificate Reply\fP 
.RS 3
.LP
When importing a certificate reply, the certificate reply is validated using trusted certificates from the keystore, and optionally using the certificates configured in the "cacerts" keystore file (if the \f2\-trustcacerts\fP option was specified).
.LP
.LP
The methods of determining whether the certificate reply is trusted are described in the following:
.LP
.RS 3
.TP 2
o
\f3If the reply is a single X.509 certificate\fP, \f3keytool\fP attempts to establish a trust chain, starting at the certificate reply and ending at a self\-signed certificate (belonging to a root CA). The certificate reply and the hierarchy of certificates used to authenticate the certificate reply form the new certificate chain of \f2alias\fP. If a trust chain cannot be established, the certificate reply is not imported. In this case, \f3keytool\fP does not print out the certificate and prompt the user to verify it, because it is very hard (if not impossible) for a user to determine the authenticity of the certificate reply. 
.TP 2
o
\f3If the reply is a PKCS#7 formatted certificate chain\fP, the chain is first ordered (with the user certificate first and the self\-signed root CA certificate last), before \f3keytool\fP attempts to match the root CA certificate provided in the reply with any of the trusted certificates in the keystore or the "cacerts" keystore file (if the \f2\-trustcacerts\fP option was specified). If no match can be found, the information of the root CA certificate is printed out, and the user is prompted to verify it, e.g., by comparing the displayed certificate fingerprints with the fingerprints obtained from some other (trusted) source of information, which might be the root CA itself. The user then has the option of aborting the import operation. If the \f2\-noprompt\fP option is given, however, there will be no interaction with the user. 
.RE

.LP
.LP
If the public key in the certificate reply matches the user's public key already stored with under \f2alias\fP, the old certificate chain is replaced with the new certificate chain in the reply. The old chain can only be replaced if a valid \f2keypass\fP, the password used to protect the private key of the entry, is supplied. If no password is provided, and the private key password is different from the keystore password, the user is prompted for it.
.LP
.RE
.LP
This command was named \f2\-import\fP in previous releases. This old name is still supported in this release and will be supported in future releases, but for clarify the new name, \f2\-importcert\fP, is preferred going forward.    
.TP 3
\-importkeystore \-srckeystore srckeystore \-destkeystore destkeystore {\-srcstoretype srcstoretype} {\-deststoretype deststoretype} [\-srcstorepass srcstorepass] [\-deststorepass deststorepass] {\-srcprotected} {\-destprotected} {\-srcalias srcalias {\-destalias destalias} [\-srckeypass srckeypass] [\-destkeypass destkeypass] } {\-noprompt} {\-srcProviderName src_provider_name} {\-destProviderName dest_provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Imports a single entry or all entries from a source keystore to a destination keystore. 
.LP
When the \f2srcalias\fP option is provided, the command imports the single entry identified by the alias to the destination keystore. If a destination alias is not provided with \f2destalias\fP, then \f2srcalias\fP is used as the destination alias. If the source entry is protected by a password, \f2srckeypass\fP will be used to recover the entry. If \f2srckeypass\fP is not provided, then \f3keytool\fP will attempt to use \f2srcstorepass\fP to recover the entry. If \f2srcstorepass\fP is either not provided or is incorrect, the user will be prompted for a password. The destination entry will be protected using \f2destkeypass\fP. If \f2destkeypass\fP is not provided, the destination entry will be protected with the source entry password. 
.LP
If the \f2srcalias\fP option is not provided, then all entries in the source keystore are imported into the destination keystore. Each destination entry will be stored under the alias from the source entry. If the source entry is protected by a password, \f2srcstorepass\fP will be used to recover the entry. If \f2srcstorepass\fP is either not provided or is incorrect, the user will be prompted for a password. If a source keystore entry type is not supported in the destination keystore, or if an error occurs while storing an entry into the destination keystore, the user will be prompted whether to skip the entry and continue, or to quit. The destination entry will be protected with the source entry password. 
.LP
If the destination alias already exists in the destination keystore, the user is prompted to either overwrite the entry, or to create a new entry under a different alias name. 
.LP
Note that if \f2\-noprompt\fP is provided, the user will not be prompted for a new destination alias. Existing entries will automatically be overwritten with the destination alias name. Finally, entries that can not be imported are automatically skipped and a warning is output.  
.RE
.RE
.SS 
Exporting Data
.LP
.RS 3

.LP
.RS 3
.TP 3
\-certreq {\-alias alias} {\-sigalg sigalg} {\-file certreq_file} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Generates a Certificate Signing Request (CSR), using the PKCS#10 format. 
.LP
A CSR is intended to be sent to a certificate authority (CA). The CA will authenticate the certificate requestor (usually off\-line) and will return a certificate or certificate chain, used to replace the existing certificate chain (which initially consists of a self\-signed certificate) in the keystore. 
.LP
The private key and X.500 Distinguished Name associated with \f2alias\fP are used to create the PKCS#10 certificate request. In order to access the private key, the appropriate password must be provided, since private keys are protected in the keystore with a password. If \f2keypass\fP is not provided at the command line, and is different from the password used to protect the integrity of the keystore, the user is prompted for it. 
.LP
\f2sigalg\fP specifies the algorithm that should be used to sign the CSR. 
.LP
The CSR is stored in the file \f2certreq_file\fP. If no file is given, the CSR is output to stdout. 
.LP
Use the \f2importcert\fP command to import the response from the CA.  
.TP 3
\-exportcert {\-alias alias} {\-file cert_file} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-rfc} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Reads (from the keystore) the certificate associated with \f2alias\fP, and stores it in the file \f2cert_file\fP. 
.LP
If no file is given, the certificate is output to stdout. 
.LP
The certificate is by default output in binary encoding, but will instead be output in the printable encoding format, as defined by the Internet RFC 1421 standard, if the \f2\-rfc\fP option is specified. 
.LP
If \f2alias\fP refers to a trusted certificate, that certificate is output. Otherwise, \f2alias\fP refers to a key entry with an associated certificate chain. In that case, the first certificate in the chain is returned. This certificate authenticates the public key of the entity addressed by \f2alias\fP. 
.LP
This command was named \f2\-export\fP in previous releases. This old name is still supported in this release and will be supported in future releases, but for clarify the new name, \f2\-exportcert\fP, is preferred going forward.  
.RE

.LP
.RE
.SS 
Displaying Data
.LP
.RS 3

.LP
.RS 3
.TP 3
\-list {\-alias alias} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v | \-rfc} {\-protected} {\-Jjavaoption} 
.LP
Prints (to stdout) the contents of the keystore entry identified by \f2alias\fP. If no alias is specified, the contents of the entire keystore are printed. 
.LP
This command by default prints the MD5 fingerprint of a certificate. If the \f2\-v\fP option is specified, the certificate is printed in human\-readable format, with additional information such as the owner, issuer, serial number, and any extensions. If the \f2\-rfc\fP option is specified, certificate contents are printed using the printable encoding format, as defined by the Internet RFC 1421 standard 
.LP
You cannot specify both \f2\-v\fP and \f2\-rfc\fP.  
.TP 3
\-printcert {\-file cert_file} {\-v} {\-Jjavaoption} 
.LP
.LP
Internet RFC 1421 standard. 
.LP
Note: This option can be used independently of a keystore.  
.RE

.LP
.RE
.SS 
Managing the Keystore
.LP
.RS 3

.LP
.RS 3
.TP 3
\-storepasswd [\-new new_storepass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption} 
.LP
Changes the password used to protect the integrity of the keystore contents. The new password is \f2new_storepass\fP, which must be at least 6 characters long.  
.TP 3
\-keypasswd {\-alias alias} [\-keypass old_keypass] [\-new new_keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption} 
.LP
Changes the password under which the private/secret key identified by \f2alias\fP is protected, from \f2old_keypass\fP to \f2new_keypass\fP, which must be at least 6 characters long. 
.LP
If the \f2\-keypass\fP option is not provided at the command line, and the key password is different from the keystore password, the user is prompted for it. 
.LP
If the \f2\-new\fP option is not provided at the command line, the user is prompted for it.  
.TP 3
\-delete [\-alias alias] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Deletes from the keystore the entry identified by \f2alias\fP. The user is prompted for the alias, if no alias is provided at the command line.  
.TP 3
\-changealias {\-alias alias} [\-destalias destalias] [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} 
.LP
Move an existing keystore entry from the specified \f2alias\fP to a new alias, \f2destalias\fP. If no destination alias is provided, the command will prompt for one. If the original entry is protected with an entry password, the password can be supplied via the "\-keypass" option. If no key password is provided, the \f2storepass\fP (if given) will be attempted first. If that attempt fails, the user will be prompted for a password.  
.RE

.LP
.RE
.SS 
Getting Help
.LP
.RS 3

.LP
.RS 3
.TP 3
\-help 
.LP
Lists the basic commands and their options.  
.RE

.LP
.RE
.SH "EXAMPLES"
.LP

.LP
.LP
Suppose you want to create a keystore for managing your public/private key pair and certificates from entities you trust.
.LP
.SS 
Generating Your Key Pair
.LP
.RS 3

.LP
.LP
The first thing you need to do is create a keystore and generate the key pair. You could use a command such as the following:
.LP
.nf
\f3
.fl
    keytool \-genkeypair \-dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US"
.fl
      \-alias business \-keypass kpi135 \-keystore /working/mykeystore
.fl
      \-storepass ab987c \-validity 180
.fl
\fP
.fi

.LP
.LP
(Please note: This must be typed as a single line. Multiple lines are used in the examples just for legibility purposes.)
.LP
.LP
This command creates the keystore named "mykeystore" in the "working" directory (assuming it doesn't already exist), and assigns it the password "ab987c". It generates a public/private key pair for the entity whose "distinguished name" has a common name of "Mark Jones", organizational unit of "JavaSoft", organization of "Sun" and two\-letter country code of "US". It uses the default "DSA" key generation algorithm to create the keys, both 1024 bits long.
.LP
.LP
It creates a self\-signed certificate (using the default "SHA1withDSA" signature algorithm) that includes the public key and the distinguished name information. This certificate will be valid for 180 days, and is associated with the private key in a keystore entry referred to by the alias "business". The private key is assigned the password "kpi135".
.LP
.LP
The command could be significantly shorter if option defaults were accepted. As a matter of fact, no options are required; defaults are used for unspecified options that have default values, and you are prompted for any required values. Thus, you could simply have the following:
.LP
.nf
\f3
.fl
    keytool \-genkeypair
.fl
\fP
.fi

.LP
In this case, a keystore entry with alias "mykey" is created, with a newly\-generated key pair and a certificate that is valid for 90 days. This entry is placed in the keystore named ".keystore" in your home directory. (The keystore is created if it doesn't already exist.) You will be prompted for the distinguished name information, the keystore password, and the private key password. 
.LP
The rest of the examples assume you executed the \f2\-genkeypair\fP command without options specified, and that you responded to the prompts with values equal to those given in the first \f2\-genkeypair\fP command, above (a private key password of "kpi135", etc.)
.LP
.RE
.SS 
Requesting a Signed Certificate from a Certification Authority
.LP
.RS 3

.LP
.LP
So far all we've got is a self\-signed certificate. A certificate is more likely to be trusted by others if it is signed by a Certification Authority (CA). To get such a signature, you first generate a Certificate Signing Request (CSR), via the following:
.LP
.nf
\f3
.fl
    keytool \-certreq \-file MarkJ.csr
.fl
\fP
.fi

.LP
This creates a CSR (for the entity identified by the default alias "mykey") and puts the request in the file named "MarkJ.csr". Submit this file to a CA, such as VeriSign, Inc. The CA will authenticate you, the requestor (usually off\-line), and then will return a certificate, signed by them, authenticating your public key. (In some cases, they will actually return a chain of certificates, each one authenticating the public key of the signer of the previous certificate in the chain.)
.RE
.SS 
Importing a Certificate for the CA
.LP
.RS 3

.LP
.LP
You need to replace your self\-signed certificate with a certificate chain, where each certificate in the chain authenticates the public key of the signer of the previous certificate in the chain, up to a "root" CA.
.LP
.LP
Before you import the certificate reply from a CA, you need one or more "trusted certificates" in your keystore or in the \f2cacerts\fP keystore file (which is described in importcert command):
.LP
.RS 3
.TP 2
o
If the certificate reply is a certificate chain, you just need the top certificate of the chain (that is, the "root" CA certificate authenticating that CA's public key). 
.TP 2
o
If the certificate reply is a single certificate, you need a certificate for the issuing CA (the one that signed it), and if that certificate is not self\-signed, you need a certificate for its signer, and so on, up to a self\-signed "root" CA certificate. 
.RE

.LP
.LP
The "cacerts" keystore file ships with five VeriSign root CA certificates, so you probably won't need to import a VeriSign certificate as a trusted certificate in your keystore. But if you request a signed certificate from a different CA, and a certificate authenticating that CA's public key hasn't been added to "cacerts", you will need to import a certificate from the CA as a "trusted certificate".
.LP
.LP
A certificate from a CA is usually either self\-signed, or signed by another CA (in which case you also need a certificate authenticating that CA's public key). Suppose company ABC, Inc., is a CA, and you obtain a file named "ABCCA.cer" that is purportedly a self\-signed certificate from ABC, authenticating that CA's public key.
.LP
.LP
Be very careful to ensure the certificate is valid prior to importing it as a "trusted" certificate! View it first (using the \f3keytool\fP \f2\-printcert\fP command, or the \f3keytool\fP \f2\-importcert\fP command without the \f2\-noprompt\fP option), and make sure that the displayed certificate fingerprint(s) match the expected ones. You can call the person who sent the certificate, and compare the fingerprint(s) that you see with the ones that they show (or that a secure public key repository shows). Only if the fingerprints are equal is it guaranteed that the certificate has not been replaced in transit with somebody else's (for example, an attacker's) certificate. If such an attack took place, and you did not check the certificate before you imported it, you would end up trusting anything the attacker has signed.
.LP
.LP
If you trust that the certificate is valid, then you can add it to your keystore via the following:
.LP
.nf
\f3
.fl
    keytool \-importcert \-alias abc \-file ABCCA.cer
.fl
\fP
.fi

.LP
This creates a "trusted certificate" entry in the keystore, with the data from the file "ABCCA.cer", and assigns the alias "abc" to the entry.
.RE
.SS 
Importing the Certificate Reply from the CA
.LP
.RS 3

.LP
.LP
Once you've imported a certificate authenticating the public key of the CA you submitted your certificate signing request to (or there's already such a certificate in the "cacerts" file), you can import the certificate reply and thereby replace your self\-signed certificate with a certificate chain. This chain is the one returned by the CA in response to your request (if the CA reply is a chain), or one constructed (if the CA reply is a single certificate) using the certificate reply and trusted certificates that are already available in the keystore where you import the reply or in the "cacerts" keystore file.
.LP
.LP
For example, suppose you sent your certificate signing request to VeriSign. You can then import the reply via the following, which assumes the returned certificate is named "VSMarkJ.cer":
.LP
.nf
\f3
.fl
    keytool \-importcert \-trustcacerts \-file VSMarkJ.cer
.fl
\fP
.fi
.RE

.LP
.SS 
Exporting a Certificate Authenticating Your Public Key
.LP
.RS 3

.LP
Suppose you have used the 
.na
\f2jarsigner\fP @
.fi
http://java.sun.com/javase/6/docs/tooldocs/solaris/jarsigner.html tool to sign a Java ARchive (JAR) file. Clients that want to use the file will want to authenticate your signature. 
.LP
One way they can do this is by first importing your public key certificate into their keystore as a "trusted" entry. You can export the certificate and supply it to your clients. As an example, you can copy your certificate to a file named \f2MJ.cer\fP via the following, assuming the entry is aliased by "mykey":
.LP
.nf
\f3
.fl
    keytool \-exportcert \-alias mykey \-file MJ.cer
.fl
\fP
.fi

.LP
Given that certificate, and the signed JAR file, a client can use the \f3jarsigner\fP tool to authenticate your signature.
.RE
.SS 
Importing Keystore
.LP
.RS 3

.LP
.LP
The command "importkeystore" is used to import an entire keystore into another keystore, which means all entries from the source keystore, including keys and certificates, are all imported to the destination keystore within a single command. You can use this command to import entries from a different type of keystore. During the import, all new entries in the destination keystore will have the same alias names and protection passwords (for secret keys and private keys). If \f3keytool\fP has difficulties recover the private keys or secret keys from the source keystore, it will prompt you for a password. If it detects alias duplication, it will ask you for a new one, you can specify a new alias or simply allow \f3keytool\fP to overwrite the existing one.
.LP
.LP
For example, to import entries from a normal JKS type keystore key.jks into a PKCS #11 type hardware based keystore, you can use the command:
.LP
.nf
\f3
.fl
keytool \-importkeystore
.fl
    \-srckeystore key.jks \-destkeystore NONE
.fl
    \-srcstoretype JKS \-deststoretype PKCS11
.fl
    \-srcstorepass changeit \-deststorepass topsecret
.fl
\fP
.fi

.LP
.LP
The importkeystore command can also be used to import a single entry from a source keystore to a destination keystore. In this case, besides the options you see in the above example, you need to specify the alias you want to import. With the srcalias option given, you can also specify the desination alias name in the command line, as well as protection password for a secret/private key and the destination protection password you want. In this way, you can issue a \f3keytool\fP command that will never ask you a question. This makes it very convenient to include a \f3keytool\fP command into a script file, like this:
.LP
.nf
\f3
.fl
keytool \-importkeystore
.fl
    \-srckeystore key.jks \-destkeystore NONE
.fl
    \-srcstoretype JKS \-deststoretype PKCS11
.fl
    \-srcstorepass changeit \-deststorepass topsecret
.fl
    \-srcalias myprivatekey \-destalias myoldprivatekey
.fl
    \-srckeypass oldkeypass \-destkeypass mynewkeypass
.fl
    \-noprompt
.fl
\fP
.fi
.RE

.LP
.SH "TERMINOLOGY and WARNINGS"
.LP

.LP
.SS 
KeyStore
.LP
.RS 3

.LP
A keystore is a storage facility for cryptographic keys and certificates.
.RE
.RS 3
.TP 2
o
.TP 2
o
\f3KeyStore Entries\fP 
.RS 3

.LP
Keystores may have different types of entries. The two most applicable entry types for \f3keytool\fP include: 
.RS 3
.TP 3
1.
\f3key entries\fP \- each holds very sensitive cryptographic key information, which is stored in a protected format to prevent unauthorized access. Typically, a key stored in this type of entry is a secret key, or a private key accompanied by the certificate "chain" for the corresponding public key. The \f3keytool\fP can handle both types od entry, while \f3jarsigner\fP tool only handle the latter type of entry, that is private keys and their associated certificate chains. 
.TP 3
2.
\f3trusted certificate entries\fP \- each contains a single public key certificate belonging to another party. It is called a "trusted certificate" because the keystore owner trusts that the public key in the certificate indeed belongs to the identity identified by the "subject" (owner) of the certificate. The issuer of the certificate vouches for this, by signing the certificate. 
.RE

.LP
.RE
.TP 2
o
\f3KeyStore Aliases\fP 
.RS 3
.LP
All keystore entries (key and trusted certificate entries) are accessed via unique \f2aliases\fP.
.LP
.LP
An alias is specified when you add an entity to the keystore using the \-genseckey command to generate a secret key, \-genkeypair command to generate a key pair (public and private key) or the \-importcert command to add a certificate or certificate chain to the list of trusted certificates. Subsequent \f3keytool\fP commands must use this same alias to refer to the entity.
.LP
.LP
For example, suppose you use the alias \f2duke\fP to generate a new public/private key pair and wrap the public key into a self\-signed certificate (see Certificate Chains) via the following command:
.LP
.nf
\f3
.fl
    keytool \-genkeypair \-alias duke \-keypass dukekeypasswd
.fl
\fP
.fi

.LP
This specifies an inital password of "dukekeypasswd" required by subsequent commands to access the private key assocated with the alias \f2duke\fP. If you later want to change duke's private key password, you use a command like the following: 
.nf
\f3
.fl
    keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass
.fl
\fP
.fi

.LP
This changes the password from "dukekeypasswd" to "newpass". 
.LP
Please note: A password should not actually be specified on a command line or in a script unless it is for testing purposes, or you are on a secure system. If you don't specify a required password option on a command line, you will be prompted for it.
.LP
.RE
.TP 2
o
\f3KeyStore Implementation\fP 
.RS 3
The \f2KeyStore\fP class provided in the \f2java.security\fP package supplies well\-defined interfaces to access and modify the information in a keystore. It is possible for there to be multiple different concrete implementations, where each implementation is that for a particular \f2type\fP of keystore. 
.LP
Currently, two command\-line tools (\f3keytool\fP and \f3jarsigner\fP) and a GUI\-based tool named \f3Policy Tool\fP make use of keystore implementations. Since \f2KeyStore\fP is publicly available, users can write additional security applications that use it.
.LP
.LP
There is a built\-in default implementation, provided by Sun Microsystems. It implements the keystore as a file, utilizing a proprietary keystore type (format) named "JKS". It protects each private key with its individual password, and also protects the integrity of the entire keystore with a (possibly different) password.
.LP
.LP
Keystore implementations are provider\-based. More specifically, the application interfaces supplied by \f2KeyStore\fP are implemented in terms of a "Service Provider Interface" (SPI). That is, there is a corresponding abstract \f2KeystoreSpi\fP class, also in the \f2java.security\fP package, which defines the Service Provider Interface methods that "providers" must implement. (The term "provider" refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API.) Thus, to provide a keystore implementation, clients must implement a "provider" and supply a KeystoreSpi subclass implementation, as described in How to Implement a Provider for the Java Cryptography Architecture.
.LP
.LP
Applications can choose different \f2types\fP of keystore implementations from different providers, using the "getInstance" factory method supplied in the \f2KeyStore\fP class. A keystore type defines the storage and data format of the keystore information, and the algorithms used to protect private/secret keys in the keystore and the integrity of the keystore itself. Keystore implementations of different types are not compatible.
.LP
.LP
\f3keytool\fP works on any file\-based keystore implementation. (It treats the keytore location that is passed to it at the command line as a filename and converts it to a FileInputStream, from which it loads the keystore information.) The \f3jarsigner\fP and \f3policytool\fP tools, on the other hand, can read a keystore from any location that can be specified using a URL.
.LP
.LP
For \f3keytool\fP and \f3jarsigner\fP, you can specify a keystore type at the command line, via the \f2\-storetype\fP option. For \f3Policy Tool\fP, you can specify a keystore type via the "Keystore" menu.
.LP
.LP
If you don't explicitly specify a keystore type, the tools choose a keystore implementation based simply on the value of the \f2keystore.type\fP property specified in the security properties file. The security properties file is called \f2java.security\fP, and it resides in the security properties directory, \f2java.home\fP/lib/security, where \f2java.home\fP is the runtime environment's directory (the \f2jre\fP directory in the SDK or the top\-level directory of the Java 2 Runtime Environment).
.LP
.LP
Each tool gets the \f2keystore.type\fP value and then examines all the currently\-installed providers until it finds one that implements keystores of that type. It then uses the keystore implementation from that provider.
.LP
.LP
The \f2KeyStore\fP class defines a static method named \f2getDefaultType\fP that lets applications and applets retrieve the value of the \f2keystore.type\fP property. The following line of code creates an instance of the default keystore type (as specified in the \f2keystore.type\fP property):
.LP
.nf
\f3
.fl
    KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
.fl
\fP
.fi

.LP
.LP
The default keystore type is "jks" (the proprietary type of the keystore implementation provided by Sun). This is specified by the following line in the security properties file:
.LP
.nf
\f3
.fl
    keystore.type=jks
.fl
\fP
.fi

.LP
.LP
To have the tools utilize a keystore implementation other than the default, you can change that line to specify a different keystore type.
.LP
.LP
For example, if you have a provider package that supplies a keystore implementation for a keystore type called "pkcs12", change the line to
.LP
.nf
\f3
.fl
    keystore.type=pkcs12
.fl
\fP
.fi

.LP
Note: case doesn't matter in keystore type designations. For example, "JKS" would be considered the same as "jks".
.RE
.RE
.SS 
Certificate
.LP
.RS 3

.LP
A \f3certificate\fP (also known as a \f3public\-key certificate\fP) is a digitally signed statement from one entity (the \f2issuer\fP), saying that the public key (and some other information) of another entity (the \f2subject\fP) has some specific value.
.RE
.RS 3
.TP 2
o
.TP 2
o
\f3Certificate Terms\fP 
.RS 3

.LP
.RS 3
.TP 3
Public Keys 
These are numbers associated with a particular entity, and are intended to be known to everyone who needs to have trusted interactions with that entity. Public keys are used to verify signatures. 
.TP 3
Digitally Signed 
If some data is \f2digitally signed\fP it has been stored with the "identity" of an entity, and a signature that proves that entity knows about the data. The data is rendered unforgeable by signing with the entity's private key. 
.TP 3
Identity 
A known way of addressing an entity. In some systems the identity is the public key, in others it can be anything from a Unix UID to an Email address to an X.509 Distinguished Name. 
.TP 3
Signature 
A signature is computed over some data using the private key of an entity (the \f2signer\fP, which in the case of a certificate is also known as the \f2issuer\fP). 
.TP 3
Private Keys 
These are numbers, each of which is supposed to be known only to the particular entity whose private key it is (that is, it's supposed to be kept secret). Private and public keys exist in pairs in all public key cryptography systems (also referred to as "public key crypto systems"). In a typical public key crypto system, such as DSA, a private key corresponds to exactly one public key. Private keys are used to compute signatures. 
.TP 3
Entity 
An entity is a person, organization, program, computer, business, bank, or something else you are trusting to some degree. 
.RE

.LP
.LP
Basically, public key cryptography requires access to users' public keys. In a large\-scale networked environment it is impossible to guarantee that prior relationships between communicating entities have been established or that a trusted repository exists with all used public keys. Certificates were invented as a solution to this public key distribution problem. Now a \f2Certification Authority\fP (CA) can act as a trusted third party. CAs are entities (for example, businesses) that are trusted to sign (issue) certificates for other entities. It is assumed that CAs will only create valid and reliable certificates, as they are bound by legal agreements. There are many public Certification Authorities, such as 
.na
\f2VeriSign\fP @
.fi
http://www.verisign.com/, 
.na
\f2Thawte\fP @
.fi
http://www.thawte.com/, 
.na
\f2Entrust\fP @
.fi
http://www.entrust.com/, and so on. You can also run your own Certification Authority using products such as the Netscape/Microsoft Certificate Servers or the Entrust CA product for your organization.
.LP
.LP
Using \f3keytool\fP, it is possible to display, import, and export certificates. It is also possible to generate self\-signed certificates.
.LP
.LP
\f3keytool\fP currently handles X.509 certificates.
.LP
.RE
.TP 2
o
\f3X.509 Certificates\fP 
.RS 3
The X.509 standard defines what information can go into a certificate, and describes how to write it down (the data format). All the data in a certificate is encoded using two related standards called ASN.1/DER. \f2Abstract Syntax Notation 1\fP describes data. The \f2Definite Encoding Rules\fP describe a single way to store and transfer that data. 
.LP
All X.509 certificates have the following data, in addition to the signature:
.LP
.RS 3
.TP 3
Version 
This identifies which version of the X.509 standard applies to this certificate, which affects what information can be specified in it. Thus far, three versions are defined. \f3keytool\fP can import and export v1, v2, and v3 certificates. It generates v3 certificates. 
.LP
\f2X.509 Version 1\fP has been available since 1988, is widely deployed, and is the most generic. 
.LP
\f2X.509 Version 2\fP introduced the concept of subject and issuer unique identifiers to handle the possibility of reuse of subject and/or issuer names over time. Most certificate profile documents strongly recommend that names not be reused, and that certificates should not make use of unique identifiers. Version 2 certificates are not widely used. 
.LP
\f2X.509 Version 3\fP is the most recent (1996) and supports the notion of extensions, whereby anyone can define an extension and include it in the certificate. Some common extensions in use today are: \f2KeyUsage\fP (limits the use of the keys to particular purposes such as "signing\-only") and \f2AlternativeNames\fP (allows other identities to also be associated with this public key, e.g. DNS names, Email addresses, IP addresses). Extensions can be marked \f2critical\fP to indicate that the extension should be checked and enforced/used. For example, if a certificate has the KeyUsage extension marked critical and set to "keyCertSign" then if this certificate is presented during SSL communication, it should be rejected, as the certificate extension indicates that the associated private key should only be used for signing certificates and not for SSL use.  
.TP 3
Serial Number 
The entity that created the certificate is responsible for assigning it a serial number to distinguish it from other certificates it issues. This information is used in numerous ways, for example when a certificate is revoked its serial number is placed in a Certificate Revocation List (CRL). 
.TP 3
Signature Algorithm Identifier 
This identifies the algorithm used by the CA to sign the certificate. 
.TP 3
Issuer Name 
The X.500 Distinguished Name of the entity that signed the certificate. This is normally a CA. Using this certificate implies trusting the entity that signed this certificate. (Note that in some cases, such as \f2root or top\-level\fP CA certificates, the issuer signs its own certificate.) 
.TP 3
Validity Period 
Each certificate is valid only for a limited amount of time. This period is described by a start date and time and an end date and time, and can be as short as a few seconds or almost as long as a century. The validity period chosen depends on a number of factors, such as the strength of the private key used to sign the certificate or the amount one is willing to pay for a certificate. This is the expected period that entities can rely on the public value, if the associated private key has not been compromised. 
.TP 3
Subject Name 
The name of the entity whose public key the certificate identifies. This name uses the X.500 standard, so it is intended to be unique across the Internet. This is the X.500 Distinguished Name (DN) of the entity, for example, 
.nf
\f3
.fl
    CN=Java Duke, OU=Java Software Division, O=Sun Microsystems Inc, C=US
.fl
\fP
.fi
(These refer to the subject's Common Name, Organizational Unit, Organization, and Country.) 
.TP 3
Subject Public Key Information 
This is the public key of the entity being named, together with an algorithm identifier which specifies which public key crypto system this key belongs to and any associated key parameters. 
.RE

.LP
.RE
.TP 2
o
\f3Certificate Chains\fP 
.RS 3
.LP
\f3keytool\fP can create and manage keystore "key" entries that each contain a private key and an associated certificate "chain". The first certificate in the chain contains the public key corresponding to the private key.
.LP
.LP
When keys are first generated (see the \-genkeypair command), the chain starts off containing a single element, a \f2self\-signed certificate\fP. A self\-signed certificate is one for which the issuer (signer) is the same as the subject (the entity whose public key is being authenticated by the certificate). Whenever the \f2\-genkeypair\fP command is called to generate a new public/private key pair, it also wraps the public key into a self\-signed certificate.
.LP
.LP
Later, after a Certificate Signing Request (CSR) has been generated (see the \-certreq command) and sent to a Certification Authority (CA), the response from the CA is imported (see \-importcert), and the self\-signed certificate is replaced by a chain of certificates. At the bottom of the chain is the certificate (reply) issued by the CA authenticating the subject's public key. The next certificate in the chain is one that authenticates the \f2CA\fP's public key.
.LP
.LP
In many cases, this is a self\-signed certificate (that is, a certificate from the CA authenticating its own public key) and the last certificate in the chain. In other cases, the CA may return a chain of certificates. In this case, the bottom certificate in the chain is the same (a certificate signed by the CA, authenticating the public key of the key entry), but the second certificate in the chain is a certificate signed by a \f2different\fP CA, authenticating the public key of the CA you sent the CSR to. Then, the next certificate in the chain will be a certificate authenticating the second CA's key, and so on, until a self\-signed "root" certificate is reached. Each certificate in the chain (after the first) thus authenticates the public key of the signer of the previous certificate in the chain.
.LP
.LP
Many CAs only return the issued certificate, with no supporting chain, especially when there is a flat hierarchy (no intermediates CAs). In this case, the certificate chain must be established from trusted certificate information already stored in the keystore.
.LP
.LP
A different reply format (defined by the PKCS#7 standard) also includes the supporting certificate chain, in addition to the issued certificate. Both reply formats can be handled by \f3keytool\fP.
.LP
.LP
The top\-level (root) CA certificate is self\-signed. However, the trust into the root's public key does not come from the root certificate itself (anybody could generate a self\-signed certificate with the distinguished name of say, the VeriSign root CA!), but from other sources like a newspaper. The root CA public key is widely known. The only reason it is stored in a certificate is because this is the format understood by most tools, so the certificate in this case is only used as a "vehicle" to transport the root CA's public key. Before you add the root CA certificate to your keystore, you should view it (using the \f2\-printcert\fP option) and compare the displayed fingerprint with the well\-known fingerprint (obtained from a newspaper, the root CA's webpage, etc.).
.LP
.RE
.TP 2
o
\f3The cacerts Certificates File\fP 
.RS 3
.LP
A certificates file named \f3"cacerts"\fP resides in the security properties directory, \f2java.home\fP/lib/security, where \f2java.home\fP is the runtime environment's directory (the \f2jre\fP directory in the SDK or the top\-level directory of the Java 2 Runtime Environment).
.LP
.LP
The "cacerts" file represents a system\-wide keystore with CA certificates. System administrators can configure and manage that file using \f3keytool\fP, specifying "jks" as the keystore type. The "cacerts" keystore file ships with several root CA certificates with the following aliases and X.500 owner distinguished names:
.LP
.RS 3
.TP 2
*
\f3Alias\fP: thawtepersonalfreemailca
.br
\f3Owner DN\fP: EmailAddress=personal\-freemail@thawte.com,
.br
CN=Thawte Personal Freemail CA,
.br
OU=Certification Services Division,
.br
O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA 
.TP 2
*
\f3Alias\fP: thawtepersonalbasicca
.br
\f3Owner DN\fP: EmailAddress=personal\-basic@thawte.com,
.br
CN=Thawte Personal Basic CA,
.br
OU=Certification Services Division,
.br
O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA 
.TP 2
*
\f3Alias\fP: thawtepersonalpremiumca
.br
\f3Owner DN\fP: EmailAddress=personal\-premium@thawte.com,
.br
CN=Thawte Personal Premium CA,
.br
OU=Certification Services Division,
.br
O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA 
.TP 2
*
\f3Alias\fP: thawteserverca
.br
\f3Owner DN\fP: EmailAddress=server\-certs@thawte.com,
.br
CN=Thawte Server CA, OU=Certification Services Division,
.br
O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA 
.TP 2
*
\f3Alias\fP: thawtepremiumserverca
.br
\f3Owner DN\fP: EmailAddress=premium\-server@thawte.com,
.br
CN=Thawte Premium Server CA,
.br
OU=Certification Services Division,
.br
O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA 
.TP 2
*
\f3Alias\fP: verisignclass1ca
.br
\f3Owner DN\fP: OU=Class 1 Public Primary Certification Authority,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass2ca
.br
\f3Owner DN\fP: OU=Class 2 Public Primary Certification Authority,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass3ca
.br
\f3Owner DN\fP: OU=Class 3 Public Primary Certification Authority,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignserverca
.br
\f3Owner DN\fP: OU=Secure Server Certification Authority,
.br
O="RSA Data Security, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass1g2ca
.br
\f3Owner DN\fP: OU=VeriSign Trust Network,
.br
OU="(c) 1998 VeriSign, Inc. \- For authorized use only",
.br
OU=Class 1 Public Primary Certification Authority \- G2,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass1g3ca
.br
\f3Owner DN\fP: CN=VeriSign Class 1 Public Primary Certification Authority \- G3, OU="(c) 1999 VeriSign, Inc. \- For authorized use only",
.br
OU=VeriSign Trust Network,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass2g2ca
.br
\f3Owner DN\fP: OU=VeriSign Trust Network,
.br
OU="(c) 1998 VeriSign, Inc. \- For authorized use only",
.br
OU=Class 2 Public Primary Certification Authority \- G2,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass2g3ca
.br
\f3Owner DN\fP: CN=VeriSign Class 2 Public Primary Certification Authority \- G3,
.br
OU="(c) 1999 VeriSign, Inc. \- For authorized use only",
.br
OU=VeriSign Trust Network,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass3g2ca
.br
\f3Owner DN\fP: OU=VeriSign Trust Network,
.br
OU="(c) 1998 VeriSign, Inc. \- For authorized use only",
.br
OU=Class 3 Public Primary Certification Authority \- G2,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: verisignclass3g3ca
.br
\f3Owner DN\fP: CN=VeriSign Class 3 Public Primary Certification Authority \- G3,
.br
OU="(c) 1999 VeriSign, Inc. \- For authorized use only",
.br
OU=VeriSign Trust Network,
.br
O="VeriSign, Inc.", C=US 
.TP 2
*
\f3Alias\fP: baltimorecodesigningca
.br
\f3Owner DN\fP: CN=Baltimore CyberTrust Code Signing Root,
.br
OU=CyberTrust, O=Baltimore, C=IE 
.TP 2
*
\f3Alias\fP: gtecybertrustglobalca
.br
\f3Owner DN\fP: CN=GTE CyberTrust Global Root,
.br
OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US 
.TP 2
*
\f3Alias\fP: baltimorecybertrustca
.br
\f3Owner DN\fP: CN=Baltimore CyberTrust Root,
.br
OU=CyberTrust, O=Baltimore, C=IE 
.TP 2
*
\f3Alias\fP: gtecybertrustca
.br
\f3Owner DN\fP: CN=GTE CyberTrust Root,
.br
O=GTE Corporation, C=US 
.TP 2
*
\f3Alias\fP: gtecybertrust5ca
.br
\f3Owner DN\fP: CN=GTE CyberTrust Root 5,
.br
OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US 
.TP 2
*
\f3Alias\fP: entrustclientca
.br
\f3Owner DN\fP: CN=Entrust.net Client Certification Authority,
.br
OU=(c) 1999 Entrust.net Limited,
.br
OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab.,
.br
O=Entrust.net, C=US 
.TP 2
*
\f3Alias\fP: entrustglobalclientca
.br
\f3Owner DN\fP: CN=Entrust.net Client Certification Authority,
.br
OU=(c) 2000 Entrust.net Limited,
.br
OU=www.entrust.net/GCCA_CPS incorp. by ref. (limits liab.),
.br
O=Entrust.net 
.TP 2
*
\f3Alias\fP: entrust2048ca
.br
\f3Owner DN\fP: CN=Entrust.net Certification Authority (2048),
.br
OU=(c) 1999 Entrust.net Limited,
.br
OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),
.br
O=Entrust.net 
.TP 2
*
\f3Alias\fP: entrustsslca
.br
\f3Owner DN\fP: CN=Entrust.net Secure Server Certification Authority,
.br
OU=(c) 1999 Entrust.net Limited,
.br
OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
.br
O=Entrust.net, C=US 
.TP 2
*
\f3Alias\fP: entrustgsslca
.br
\f3Owner DN\fP: CN=Entrust.net Secure Server Certification Authority,
.br
OU=(c) 2000 Entrust.net Limited,
.br
OU=www.entrust.net/SSL_CPS incorp. by ref. (limits liab.),
.br
O=Entrust.net 
.TP 2
*
\f3Alias\fP: godaddyclass2ca
.br
\f3Owner DN\fP: OU=Go Daddy Class 2 Certification Authority,
.br
O="The Go Daddy Group, Inc.", C=US 
.TP 2
*
\f3Alias\fP: starfieldclass2ca
.br
\f3Owner DN\fP: OU=Starfield Class 2 Certification Authority,
.br
O="Starfield Technologies, Inc.", C=US 
.TP 2
*
\f3Alias\fP: valicertclass2ca
.br
\f3Owner DN\fP: EMAILADDRESS=info@valicert.com,
.br
CN=http://www.valicert.com/,
.br
OU=ValiCert Class 2 Policy Validation Authority,
.br
O="ValiCert, Inc.", L=ValiCert Validation Network 
.TP 2
*
\f3Alias\fP: geotrustglobalca
.br
\f3Owner DN\fP: CN=GeoTrust Global CA,
.br
O=GeoTrust Inc., C=US 
.TP 2
*
\f3Alias\fP: equifaxsecureca
.br
\f3Owner DN\fP: OU=Equifax Secure Certificate Authority,
.br
O=Equifax, C=US 
.TP 2
*
\f3Alias\fP: equifaxsecureebusinessca1
.br
\f3Owner DN\fP: CN=Equifax Secure eBusiness CA\-1,
.br
O=Equifax Secure Inc., C=US 
.TP 2
*
\f3Alias\fP: equifaxsecureebusinessca2
.br
\f3Owner DN\fP: OU=Equifax Secure eBusiness CA\-2,
.br
O=Equifax Secure, C=US 
.TP 2
*
\f3Alias\fP: equifaxsecureglobalebusinessca1
.br
\f3Owner DN\fP: CN=Equifax Secure Global eBusiness CA\-1,
.br
O=Equifax Secure Inc., C=US 
.TP 2
*
\f3Alias\fP: soneraclass1ca
.br
\f3Owner DN\fP: CN=Sonera Class1 CA, O=Sonera, C=FI 
.TP 2
*
\f3Alias\fP: soneraclass2ca
.br
\f3Owner DN\fP: CN=Sonera Class2 CA, O=Sonera, C=FI 
.TP 2
*
\f3Alias\fP: comodoaaaca
.br
\f3Owner DN\fP: CN=AAA Certificate Services,
.br
O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB 
.TP 2
*
\f3Alias\fP: addtrustclass1ca
.br
\f3Owner DN\fP: CN=AddTrust Class 1 CA Root,
.br
OU=AddTrust TTP Network, O=AddTrust AB, C=SE 
.TP 2
*
\f3Alias\fP: addtrustexternalca
.br
\f3Owner DN\fP: CN=AddTrust External CA Root,
.br
OU=AddTrust External TTP Network, O=AddTrust AB, C=SE 
.TP 2
*
\f3Alias\fP: addtrustqualifiedca
.br
\f3Owner DN\fP: CN=AddTrust Qualified CA Root,
.br
OU=AddTrust TTP Network, O=AddTrust AB, C=SE 
.TP 2
*
\f3Alias\fP: utnuserfirsthardwareca
.br
\f3Owner DN\fP: CN=UTN\-USERFirst\-Hardware,
.br
OU=http://www.usertrust.com, O=The USERTRUST Network,
.br
L=Salt Lake City, ST=UT, C=US 
.TP 2
*
\f3Alias\fP: utnuserfirstclientauthemailca
.br
\f3Owner DN\fP: CN=UTN\-USERFirst\-Client Authentication and Email,
.br
OU=http://www.usertrust.com, O=The USERTRUST Network,
.br
L=Salt Lake City, ST=UT, C=US 
.TP 2
*
\f3Alias\fP: utndatacorpsgcca
.br
\f3Owner DN\fP: CN=UTN \- DATACorp SGC,
.br
OU=http://www.usertrust.com, O=The USERTRUST Network,
.br
L=Salt Lake City, ST=UT, C=US 
.TP 2
*
\f3Alias\fP: utnuserfirstobjectca
.br
\f3Owner DN\fP: CN=UTN\-USERFirst\-Object,
.br
OU=http://www.usertrust.com, O=The USERTRUST Network,
.br
L=Salt Lake City, ST=UT, C=US 
.RE

.LP
.LP
The initial password of the "cacerts" keystore file is "changeit". System administrators should change that password and the default access permission of that file upon installing the SDK.
.LP
.RS 3

.LP

.LP
\f3IMPORTANT: Verify Your \fP\f4cacerts\fP\f3 File\fP
.br

.LP
Since you trust the CAs in the \f2cacerts\fP file as entities for signing and issuing certificates to other entities, you must manage the \f2cacerts\fP file carefully. The \f2cacerts\fP file should contain only certificates of the CAs you trust. It is your responsibility to verify the trusted root CA certificates bundled in the \f2cacerts\fP file and make your own trust decisions. To remove an untrusted CA certificate from the \f2cacerts\fP file, use the delete option of the \f2keytool\fP command. You can find the \f2cacerts\fP file in the JRE installation directory. Contact your system administrator if you do not have permission to edit this file.
.br

.LP
.RE

.LP
.RE
.TP 2
o
\f3The Internet RFC 1421 Certificate Encoding Standard\fP 
.RS 3
.LP
Certificates are often stored using the printable encoding format defined by the Internet RFC 1421 standard, instead of their binary encoding. This certificate format, also known as "Base 64 encoding", facilitates exporting certificates to other applications by email or through some other mechanism.
.LP
.LP
Certificates read by the \f2\-importcert\fP and \f2\-printcert\fP commands can be in either this format or binary encoded.
.LP
.LP
The \f2\-exportcert\fP command by default outputs a certificate in binary encoding, but will instead output a certificate in the printable encoding format, if the \f2\-rfc\fP option is specified.
.LP
.LP
The \f2\-list\fP command by default prints the MD5 fingerprint of a certificate. If the \f2\-v\fP option is specified, the certificate is printed in human\-readable format, while if the \f2\-rfc\fP option is specified, the certificate is output in the printable encoding format.
.LP
.LP
In its printable encoding format, the encoded certificate is bounded at the beginning by
.LP
.nf
\f3
.fl
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
.fl
\fP
.fi

.LP
.LP
and at the end by
.LP
.nf
\f3
.fl
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
.fl
\fP
.fi
.RE
.RE

.LP
.SS 
X.500 Distinguished Names
.LP
.RS 3

.LP
X.500 Distinguished Names are used to identify entities, such as those which are named by the \f2subject\fP and \f2issuer\fP (signer) fields of X.509 certificates. \f3keytool\fP supports the following subparts: 
.RS 3
.TP 2
o
\f2commonName\fP \- common name of a person, e.g., "Susan Jones" 
.TP 2
o
\f2organizationUnit\fP \- small organization (e.g, department or division) name, e.g., "Purchasing" 
.TP 2
o
\f2organizationName\fP \- large organization name, e.g., "ABCSystems, Inc." 
.TP 2
o
\f2localityName\fP \- locality (city) name, e.g., "Palo Alto" 
.TP 2
o
\f2stateName\fP \- state or province name, e.g., "California" 
.TP 2
o
\f2country\fP \- two\-letter country code, e.g., "CH" 
.RE

.LP
.LP
When supplying a distinguished name string as the value of a \f2\-dname\fP option, as for the \f2\-genkeypair\fP  command, the string must be in the following format:
.LP
.nf
\f3
.fl
CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP\f3, S=\fP\f4state\fP\f3, C=\fP\f4countryCode\fP\f3
.fl
\fP
.fi

.LP
.LP
where all the italicized items represent actual values and the above keywords are abbreviations for the following:
.LP
.nf
\f3
.fl
       CN=commonName
.fl
        OU=organizationUnit
.fl
        O=organizationName
.fl
        L=localityName
.fl
        S=stateName
.fl
        C=country
.fl
\fP
.fi

.LP
.LP
A sample distinguished name string is
.LP
.nf
\f3
.fl
CN=Mark Smith, OU=JavaSoft, O=Sun, L=Cupertino, S=California, C=US
.fl
\fP
.fi

.LP
and a sample command using such a string is 
.nf
\f3
.fl
keytool \-genkeypair \-dname "CN=Mark Smith, OU=JavaSoft, O=Sun, L=Cupertino,
.fl
S=California, C=US" \-alias mark
.fl
\fP
.fi

.LP
.LP
Case does not matter for the keyword abbreviations. For example, "CN", "cn", and "Cn" are all treated the same.
.LP
.LP
Order matters; each subcomponent must appear in the designated order. However, it is not necessary to have all the subcomponents. You may use a subset, for example:
.LP
.nf
\f3
.fl
CN=Steve Meier, OU=SunSoft, O=Sun, C=US
.fl
\fP
.fi

.LP
.LP
If a distinguished name string value contains a comma, the comma must be escaped by a "\\" character when you specify the string on a command line, as in
.LP
.nf
\f3
.fl
   cn=peter schuster, o=Sun Microsystems\\, Inc., o=sun, c=us
.fl
\fP
.fi

.LP
.LP
It is never necessary to specify a distinguished name string on a command line. If it is needed for a command, but not supplied on the command line, the user is prompted for each of the subcomponents. In this case, a comma does not need to be escaped by a "\\".
.LP
.RE
.SS 
WARNING Regarding Importing Trusted Certificates
.LP
.RS 3

.LP
IMPORTANT: Be sure to check a certificate very carefully before importing it as a trusted certificate! 
.LP
View it first (using the \f2\-printcert\fP command, or the \f2\-importcert\fP command without the \f2\-noprompt\fP option), and make sure that the displayed certificate fingerprint(s) match the expected ones. For example, suppose someone sends or emails you a certificate, and you put it in a file named \f2/tmp/cert\fP. Before you consider adding the certificate to your list of trusted certificates, you can execute a \f2\-printcert\fP command to view its fingerprints, as in
.LP
.nf
\f3
.fl
  keytool \-printcert \-file /tmp/cert
.fl
    Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll
.fl
    Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll
.fl
    Serial Number: 59092b34
.fl
    Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997
.fl
    Certificate Fingerprints:
.fl
         MD5:  11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F
.fl
         SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE
.fl
\fP
.fi

.LP
Then call or otherwise contact the person who sent the certificate, and compare the fingerprint(s) that you see with the ones that they show. Only if the fingerprints are equal is it guaranteed that the certificate has not been replaced in transit with somebody else's (for example, an attacker's) certificate. If such an attack took place, and you did not check the certificate before you imported it, you would end up trusting anything the attacker has signed (for example, a JAR file with malicious class files inside). 
.LP
Note: it is not required that you execute a \f2\-printcert\fP command prior to importing a certificate, since before adding a certificate to the list of trusted certificates in the keystore, the \f2\-importcert\fP command prints out the certificate information and prompts you to verify it. You then have the option of aborting the import operation. Note, however, this is only the case if you invoke the \f2\-importcert\fP command without the \f2\-noprompt\fP option. If the \f2\-noprompt\fP option is given, there is no interaction with the user.
.LP
.RE
.SS 
Warning Regarding Passwords
.LP
.RS 3

.LP
.LP
Most commands operating on a keystore require the store password. Some commands require a private/secret key password.
.LP
.LP
Passwords can be specified on the command line (in the \f2\-storepass\fP and \f2\-keypass\fP options, respectively). However, a password should not be specified on a command line or in a script unless it is for testing purposes, or you are on a secure system.
.LP
.LP
If you don't specify a required password option on a command line, you will be prompted for it.
.LP
.RE
.SH "SEE ALSO"
.LP

.LP
.RS 3
.TP 2
o
.na
\f2jar\fP @
.fi
http://java.sun.com/javase/6/docs/tooldocs/solaris/jar.html tool documentation 
.TP 2
o
.na
\f2jarsigner\fP @
.fi
http://java.sun.com/javase/6/docs/tooldocs/solaris/jarsigner.html tool documentation 
.TP 2
o
the 
.na
\f4Security\fP @
.fi
http://java.sun.com/docs/books/tutorial/security/index.html trail of the 
.na
\f4Java Tutorial\fP @
.fi
http://java.sun.com/docs/books/tutorial/trailmap.html for examples of the use of \f3keytool\fP 
.RE

.LP
.SH "CHANGES"
.LP

.LP
.LP
The command interface for keytool changed in Java SE 6.
.LP
.LP
\f3keytool\fP no longer displays password input when entered by users. Since password input can no longer be viewed when entered, users will be prompted to re\-enter passwords any time a password is being set or changed (for example, when setting the initial keystore password, or when changing a key password).
.LP
.LP
Some commands have simply been renamed, and other commands deemed obsolete are no longer listed in this document. All previous commands (both renamed and obsolete) are still supported in this release and will continue to be supported in future releases. The following summarizes all of the changes made to the keytool command interface:
.LP
.LP
Renamed commands:
.LP
.RS 3
.TP 2
o
\f2\-export\fP, renamed to \f2\-exportcert\fP 
.TP 2
o
\f2\-genkey\fP, renamed to \f2\-genkeypair\fP 
.TP 2
o
\f2\-import\fP, renamed to \f2\-importcert\fP 
.RE

.LP
.LP
Commands deemed obsolete and no longer documented:
.LP
.RS 3
.TP 2
o
.na
\f2\-keyclone\fP @
.fi
http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#keycloneCmd 
.TP 2
o
.na
\f2\-identitydb\fP @
.fi
http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#identitydbCmd 
.TP 2
o
.na
\f2\-selfcert\fP @
.fi
http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#selfcertCmd 
.RE

.LP

.LP
 
