.'" t
." Copyright 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
 
