Generate Keystore with Java Program
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import java.security.SignatureException;
import java.security.KeyStore.PrivateKeyEntry;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Date;
import org.bouncycastle.jce.X509Principal;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.x509.X509V3CertificateGenerator;
public class GenerateKeyStore {
public static void main(String[] args) throws NoSuchAlgorithmException,
NoSuchProviderException, InvalidKeyException, SecurityException,
SignatureException, IOException, KeyStoreException,
CertificateException {
System.out.println("Keystore generation...");
Security.addProvider(new BouncyCastleProvider());
String name = "Username";
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
KeyPair pair = keyGen.generateKeyPair();
X509V3CertificateGenerator v3CertGen = new X509V3CertificateGenerator();
int serial = new SecureRandom().nextInt();
v3CertGen.setSerialNumber(BigInteger.valueOf(serial < 0 ? -1 * serial
: serial));
v3CertGen.setIssuerDN(new X509Principal("CN=" + name
+ ", OU=None, O=None L=None, C=None"));
v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60
* 60 * 24 * 30));
v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + 1000L * 60
* 60 * 24 * 365 * 10));
v3CertGen.setSubjectDN(new X509Principal("CN=" + name
+ ", OU=None, O=None L=None, C=None"));
v3CertGen.setPublicKey(pair.getPublic());
v3CertGen.setSignatureAlgorithm("MD5WithRSAEncryption");
X509Certificate PKCertificate = v3CertGen.generateX509Certificate(pair
.getPrivate());
FileOutputStream fos = new FileOutputStream(
"C:\\" + name + "_Cert.csr");
fos.write(PKCertificate.getEncoded());
fos.close();
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
char[] password = "Mohsin".toCharArray();
ks.load(null, password);
PrivateKeyEntry entry = new PrivateKeyEntry(pair.getPrivate(),
new java.security.cert.Certificate[] { PKCertificate });
ks.setEntry(name, entry, new KeyStore.PasswordProtection(password));
fos = new FileOutputStream("C:\\" + name + "_keystore.pfx");
ks.store(fos, password);
fos.close();
}
}
import java.io.IOException;
import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import java.security.SignatureException;
import java.security.KeyStore.PrivateKeyEntry;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Date;
import org.bouncycastle.jce.X509Principal;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.x509.X509V3CertificateGenerator;
public class GenerateKeyStore {
public static void main(String[] args) throws NoSuchAlgorithmException,
NoSuchProviderException, InvalidKeyException, SecurityException,
SignatureException, IOException, KeyStoreException,
CertificateException {
System.out.println("Keystore generation...");
Security.addProvider(new BouncyCastleProvider());
String name = "Username";
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
KeyPair pair = keyGen.generateKeyPair();
X509V3CertificateGenerator v3CertGen = new X509V3CertificateGenerator();
int serial = new SecureRandom().nextInt();
v3CertGen.setSerialNumber(BigInteger.valueOf(serial < 0 ? -1 * serial
: serial));
v3CertGen.setIssuerDN(new X509Principal("CN=" + name
+ ", OU=None, O=None L=None, C=None"));
v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60
* 60 * 24 * 30));
v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + 1000L * 60
* 60 * 24 * 365 * 10));
v3CertGen.setSubjectDN(new X509Principal("CN=" + name
+ ", OU=None, O=None L=None, C=None"));
v3CertGen.setPublicKey(pair.getPublic());
v3CertGen.setSignatureAlgorithm("MD5WithRSAEncryption");
X509Certificate PKCertificate = v3CertGen.generateX509Certificate(pair
.getPrivate());
FileOutputStream fos = new FileOutputStream(
"C:\\" + name + "_Cert.csr");
fos.write(PKCertificate.getEncoded());
fos.close();
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
char[] password = "Mohsin".toCharArray();
ks.load(null, password);
PrivateKeyEntry entry = new PrivateKeyEntry(pair.getPrivate(),
new java.security.cert.Certificate[] { PKCertificate });
ks.setEntry(name, entry, new KeyStore.PasswordProtection(password));
fos = new FileOutputStream("C:\\" + name + "_keystore.pfx");
ks.store(fos, password);
fos.close();
}
}
Comments
Post a Comment