sitelink1 | http://java-house.jp/ml/archive/j-h-b/051472.html |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars5 | |
extra_vars6 |
秘密鍵を keytool で扱える形式への?換方法
·미리보기 | 소스복사·
- ::::::::::::::::::::::::::::
- :: doit.sh
- ::::::::::::::::::::::::::::
- #!/bin/sh
- #
- # JavaKeyStore test program -- import privatekey&cert from openssl
- #
- set -x
- # -- force cleanup
- rm -f newkeystore *.class *.der *.pem *~
- # -- fetch openssl prepared privatekey & cert
- SOMEWHERE=$1
- cp $SOMEWHERE/client-private.pem .
- cp $SOMEWHERE/client-cert.pem .
- # -- pem -> der conversion
- openssl x509 -in client-cert.pem -out client-cert.der -outform der
- openssl rsa -in client-private.pem -out client-private-rsa.der -inform pem -outform der
- openssl pkcs8 -topk8 -in client-private-rsa.der -inform der -out client-private.der -outform der -nocrypt
- # -- compile && exec
- javac -classpath . CreateKeyStore.java &&
- java -classpath . CreateKeyStore paSsword pasSword newkeystore thatsme client-private.der client-cert.der
- # -- show it (cert part)
- keytool -v -list -storepass paSsword -keypass pasSword -keystore newkeystore
- # -- show it (key part)
- javac -classpath . GetPrivateKey.java &&
- java -classpath . GetPrivateKey paSsword pasSword newkeystore thatsme |
- openssl pkcs8 -inform der -nocrypt -outform pem |
- openssl rsa -text
- # -- delete intermediate files
- rm -f *.class *.der *.pem *~
·미리보기 | 소스복사·
- ::::::::::::::::::::::::::::
- :: CreateKeyStore.java
- ::::::::::::::::::::::::::::
- /*
- * $ javac -classpath . CreateKeyStore.java
- * $ java -classpath . CreateKeyStore storepass keypass newkeystorename alias keyin certin
- *
- * ref:
- * j2sdk1_4_0/j2se/src/share/classes/sun/security/tools/KeyTool.java
- * j2sdk1_4_0/j2se/src/share/classes/sun/security/provider/JavaKeyStore.java
- * j2sdk1_4_0/j2se/src/share/classes/java/security/KeyStore.java
- */
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.DataInputStream;
- import java.io.FileOutputStream;
- import java.security.Key;
- import java.security.KeyStore;
- import java.security.PrivateKey;
- import java.security.KeyFactory;
- import java.security.cert.Certificate;
- import java.security.cert.CertificateFactory;
- import java.security.cert.X509Certificate;
- import java.security.interfaces.RSAPrivateKey;
- import java.security.spec.PKCS8EncodedKeySpec;
- public class CreateKeyStore {
- public static void main(String[] args) throws Exception {
- /*
- * variables
- */
- String spass = args[0];
- String kpass = args[1];
- String keystore = args[2];
- String alias = args[3];
- String keyin = args[4];
- String certin = args[5];
- /*
- * load given private key
- */
- KeyFactory kf = KeyFactory.getInstance("RSA");
- File f = new File(keyin);
- byte[] b = new byte[(int) f.length()];
- DataInputStream i = new DataInputStream(new FileInputStream(f));
- i.readFully(b);
- i.close();
- Key key = kf.generatePrivate(new PKCS8EncodedKeySpec(b));
- /*
- * load given certificate
- */
- FileInputStream in = new FileInputStream(certin);
- CertificateFactory cf = CertificateFactory.getInstance("X509");
- X509Certificate cert = (X509Certificate) cf.generateCertificate(in);
- in.close();
- /*
- * create a fresh keystore with given privatekey and certificate
- */
- KeyStore ks = KeyStore.getInstance("JKS");
- ks.load(null, null); // <= means ``inititlize''
- ks.setKeyEntry(alias, key, kpass.toCharArray(), new Certificate[] { cert, });
- FileOutputStream os = new FileOutputStream(keystore);
- ks.store(os, spass.toCharArray());
- os.close();
- }
- }
·미리보기 | 소스복사·
- ::::::::::::::::::::::::::::
- :: GetPrivateKey.java
- ::::::::::::::::::::::::::::
- /*
- * $ javac GetPrivateKey.java
- * $ java GetPrivateKey storepass keypass keystore alias >key.out
- */
- import java.security.KeyStore;
- import java.security.Key;
- import java.io.FileInputStream;
- public class GetPrivateKey {
- public static void main(String[] args) throws Exception {
- String spass = args[0];
- String kpass = args[1];
- String keystore = args[2];
- String alias = args[3];
- KeyStore ks = KeyStore.getInstance("JKS");
- FileInputStream fs = new FileInputStream(keystore);
- ks.load(fs, spass.toCharArray());
- Key key = ks.getKey(alias, kpass.toCharArray());
- System.out.write(key.getEncoded());
- }
- }