<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSecurity%2FKeyStore</id>
		<title>Java/Security/KeyStore - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSecurity%2FKeyStore"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Security/KeyStore&amp;action=history"/>
		<updated>2026-04-15T19:11:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Security/KeyStore&amp;diff=7619&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Security/KeyStore&amp;diff=7619&amp;oldid=prev"/>
				<updated>2010-06-01T06:48:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:48, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Security/KeyStore&amp;diff=7618&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Security/KeyStore&amp;diff=7618&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Create a keystore with a self-signed certificate, using the keytool command ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
keytool -keystore mySrvKeystore -keypasswd 123456 -genkey -keyalg RSA -alias mycert&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exporting a Certificate to a File ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.OutputStreamWriter;&lt;br /&gt;
import java.io.Writer;&lt;br /&gt;
import java.nio.charset.Charset;&lt;br /&gt;
import java.security.KeyStore;&lt;br /&gt;
import java.security.cert.Certificate;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    FileInputStream is = new FileInputStream(&amp;quot;your.keystore&amp;quot;);&lt;br /&gt;
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());&lt;br /&gt;
    keystore.load(is, &amp;quot;my-keystore-password&amp;quot;.toCharArray());&lt;br /&gt;
    String alias = &amp;quot;myalias&amp;quot;;&lt;br /&gt;
    Certificate cert = keystore.getCertificate(alias);&lt;br /&gt;
    File file = null;&lt;br /&gt;
    byte[] buf = cert.getEncoded();&lt;br /&gt;
    FileOutputStream os = new FileOutputStream(file);&lt;br /&gt;
    os.write(buf);&lt;br /&gt;
    os.close();&lt;br /&gt;
    Writer wr = new OutputStreamWriter(os, Charset.forName(&amp;quot;UTF-8&amp;quot;));&lt;br /&gt;
    wr.write(new sun.misc.BASE64Encoder().encode(buf));&lt;br /&gt;
    wr.flush();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import a key/certificate pair from a pkcs12 file into a regular JKS format keystore ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
// &lt;br /&gt;
// Copyright (c) 1999 Jason Gilbert&lt;br /&gt;
// $Id: PKCS12Import.java,v 1.3 2004/05/09 20:32:49 gregwilkins Exp $&lt;br /&gt;
// &lt;br /&gt;
&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.OutputStream;&lt;br /&gt;
import java.security.Key;&lt;br /&gt;
import java.security.KeyStore;&lt;br /&gt;
import java.security.cert.Certificate;&lt;br /&gt;
import java.security.cert.X509Certificate;&lt;br /&gt;
import java.util.Enumeration;&lt;br /&gt;
/**&lt;br /&gt;
 * This class can be used to import a key/certificate pair from a pkcs12 file&lt;br /&gt;
 * into a regular JKS format keystore for use with jetty and other java based&lt;br /&gt;
 * SSL applications, etc. &lt;br /&gt;
 *&amp;lt;PRE&amp;gt;&lt;br /&gt;
 *    usage: java PKCS12Import {pkcs12file} [newjksfile]&lt;br /&gt;
 *&amp;lt;/PRE&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * If you don&amp;quot;t supply newjksfile, newstore.jks will be used.  This can be an&lt;br /&gt;
 * existing JKS keystore.&lt;br /&gt;
 * &amp;lt;P&amp;gt;&lt;br /&gt;
 * Upon execution, you will be prompted for the password for the pkcs12 keystore&lt;br /&gt;
 * as well as the password for the jdk file.  After execution you should have a&lt;br /&gt;
 * JKS keystore file that contains the private key and certificate that were in&lt;br /&gt;
 * the pkcs12&lt;br /&gt;
 * &amp;lt;P&amp;gt;&lt;br /&gt;
 * You can generate a pkcs12 file from PEM encoded certificate and key files&lt;br /&gt;
 * using the following openssl command:&lt;br /&gt;
 * &amp;lt;PRE&amp;gt;&lt;br /&gt;
 *    openssl pkcs12 -export -out keystore.pkcs12 -in www.crt -inkey www.key&lt;br /&gt;
 * &amp;lt;/PRE&amp;gt;&lt;br /&gt;
 * then run:&lt;br /&gt;
 * &amp;lt;PRE&amp;gt;&lt;br /&gt;
 *    java PKCS12Import keystore.pkcs12 keytore.jks&lt;br /&gt;
 * &amp;lt;/PRE&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jason Gilbert &amp;amp;lt;jason@doozer.ru&amp;amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
public class PKCS12Import&lt;br /&gt;
{&lt;br /&gt;
   public static void main(String[] args) throws Exception&lt;br /&gt;
   {&lt;br /&gt;
      if (args.length &amp;lt; 1) {&lt;br /&gt;
         System.err.println(&lt;br /&gt;
               &amp;quot;usage: java PKCS12Import {pkcs12file} [newjksfile]&amp;quot;);&lt;br /&gt;
         System.exit(1);&lt;br /&gt;
      }&lt;br /&gt;
      File fileIn = new File(args[0]);&lt;br /&gt;
      File fileOut;&lt;br /&gt;
      if (args.length &amp;gt; 1) {&lt;br /&gt;
         fileOut = new File(args[1]);&lt;br /&gt;
      } else {&lt;br /&gt;
         fileOut = new File(&amp;quot;newstore.jks&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (!fileIn.canRead()) {&lt;br /&gt;
         System.err.println(&lt;br /&gt;
               &amp;quot;Unable to access input keystore: &amp;quot; + fileIn.getPath());&lt;br /&gt;
         System.exit(2);&lt;br /&gt;
      }&lt;br /&gt;
      if (fileOut.exists() &amp;amp;&amp;amp; !fileOut.canWrite()) {&lt;br /&gt;
         System.err.println(&lt;br /&gt;
               &amp;quot;Output file is not writable: &amp;quot; + fileOut.getPath());&lt;br /&gt;
         System.exit(2);&lt;br /&gt;
      }&lt;br /&gt;
      KeyStore kspkcs12 = KeyStore.getInstance(&amp;quot;pkcs12&amp;quot;);&lt;br /&gt;
      KeyStore ksjks = KeyStore.getInstance(&amp;quot;jks&amp;quot;);&lt;br /&gt;
      System.out.print(&amp;quot;Enter input keystore passphrase: &amp;quot;);&lt;br /&gt;
      char[] inphrase = readPassphrase();&lt;br /&gt;
      System.out.print(&amp;quot;Enter output keystore passphrase: &amp;quot;);&lt;br /&gt;
      char[] outphrase = readPassphrase();&lt;br /&gt;
      kspkcs12.load(new FileInputStream(fileIn), inphrase);&lt;br /&gt;
      ksjks.load(&lt;br /&gt;
            (fileOut.exists())&lt;br /&gt;
            ? new FileInputStream(fileOut) : null, outphrase);&lt;br /&gt;
      Enumeration eAliases = kspkcs12.aliases();&lt;br /&gt;
      int n = 0;&lt;br /&gt;
      while (eAliases.hasMoreElements()) {&lt;br /&gt;
         String strAlias = (String)eAliases.nextElement();&lt;br /&gt;
         System.err.println(&amp;quot;Alias &amp;quot; + n++ + &amp;quot;: &amp;quot; + strAlias);&lt;br /&gt;
         if (kspkcs12.isKeyEntry(strAlias)) {&lt;br /&gt;
            System.err.println(&amp;quot;Adding key for alias &amp;quot; + strAlias);&lt;br /&gt;
            Key key = kspkcs12.getKey(strAlias, inphrase);&lt;br /&gt;
            Certificate[] chain = kspkcs12.getCertificateChain(strAlias);&lt;br /&gt;
            ksjks.setKeyEntry(strAlias, key, outphrase, chain);&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      OutputStream out = new FileOutputStream(fileOut);&lt;br /&gt;
      ksjks.store(out, outphrase);&lt;br /&gt;
      out.close();&lt;br /&gt;
   }&lt;br /&gt;
   static void dumpChain(Certificate[] chain)&lt;br /&gt;
   {&lt;br /&gt;
      for (int i = 0; i &amp;lt; chain.length; i++) {&lt;br /&gt;
         Certificate cert = chain[i];&lt;br /&gt;
         if (cert instanceof X509Certificate) {&lt;br /&gt;
            X509Certificate x509 = (X509Certificate)chain[i];&lt;br /&gt;
            System.err.println(&amp;quot;subject: &amp;quot; + x509.getSubjectDN());&lt;br /&gt;
            System.err.println(&amp;quot;issuer: &amp;quot; + x509.getIssuerDN());&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   static char[] readPassphrase() throws IOException&lt;br /&gt;
   {&lt;br /&gt;
      InputStreamReader in = new InputStreamReader(System.in);&lt;br /&gt;
      char[] cbuf = new char[256];&lt;br /&gt;
      int i = 0;&lt;br /&gt;
readchars:&lt;br /&gt;
      while (i &amp;lt; cbuf.length) {&lt;br /&gt;
         char c = (char)in.read();&lt;br /&gt;
         switch (c) {&lt;br /&gt;
            case &amp;quot;\r&amp;quot;:&lt;br /&gt;
               break readchars;&lt;br /&gt;
            case &amp;quot;\n&amp;quot;:&lt;br /&gt;
               break readchars;&lt;br /&gt;
            default:&lt;br /&gt;
               cbuf[i++] = c;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      char[] phrase = new char[i];&lt;br /&gt;
      System.arraycopy(cbuf, 0, phrase, 0, i);&lt;br /&gt;
      return phrase;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Listing the Aliases in a Key Store: A key store is a collection of keys and certificates. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.KeyStore;&lt;br /&gt;
import java.util.Enumeration;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    FileInputStream is = new FileInputStream(&amp;quot;yourfile&amp;quot;+&amp;quot;.keystore&amp;quot;);&lt;br /&gt;
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());&lt;br /&gt;
    String password = &amp;quot;my-keystore-password&amp;quot;;&lt;br /&gt;
    keystore.load(is, password.toCharArray());&lt;br /&gt;
    Enumeration e = keystore.aliases();&lt;br /&gt;
    for (; e.hasMoreElements();) {&lt;br /&gt;
      String alias = (String) e.nextElement();&lt;br /&gt;
      boolean b = keystore.isKeyEntry(alias);&lt;br /&gt;
      b = keystore.isCertificateEntry(alias);&lt;br /&gt;
    }&lt;br /&gt;
    is.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Listing the Aliases in a Key Store using keytool: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
keytool -list -storepass my-keystore-password&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retrieving a Key Pair from a Key Store ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.Key;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyStore;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
import java.security.cert.Certificate;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    FileInputStream is = new FileInputStream(&amp;quot;your.keystore&amp;quot;);&lt;br /&gt;
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());&lt;br /&gt;
    keystore.load(is, &amp;quot;my-keystore-password&amp;quot;.toCharArray());&lt;br /&gt;
    String alias = &amp;quot;myalias&amp;quot;;&lt;br /&gt;
    Key key = keystore.getKey(alias, &amp;quot;password&amp;quot;.toCharArray());&lt;br /&gt;
    if (key instanceof PrivateKey) {&lt;br /&gt;
      // Get certificate of public key&lt;br /&gt;
      Certificate cert = keystore.getCertificate(alias);&lt;br /&gt;
      // Get public key&lt;br /&gt;
      PublicKey publicKey = cert.getPublicKey();&lt;br /&gt;
      // Return a key pair&lt;br /&gt;
      new KeyPair(publicKey, (PrivateKey) key);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>