Frage

Ich habe nur ein selbst signiertes Zertifikat auf einem Linux-Box tomcat 6 ausgeführt wird.

habe ich die Schlüssel wie diese, gültig für 10 Jahre:

keytool -genkey -alias tomcatorange -keyalg RSA -validity 3650

und den Schlüsselspeicher in einen Ordner in tomcat kopiert und server.xml zu Punkt, an dem Schlüsselspeicher aktualisiert.

Jetzt ist mein Netzwerk-Admin ist sowohl für die öffentlichen und privaten Schlüssel (für unsere Load-Balancer) fragen

Ich kann den öffentlichen Schlüssel erzeugen mit:

openssl s_client -connect mydomain.com:8443

Aber wie kann ich exportieren / abrufen, die privaten Schlüssel?

War es hilfreich?

Lösung

Es ist ein wenig kompliziert. Zuerst können Sie mit keytool dem privaten setzen Schlüssel in PKCS12-Format, das mehr tragbar / compatible als Java verschiedene Schlüsselspeicherformate ist. Hier ist ein Beispiel einen privaten Schlüssel mit Alias ??‚mykey‘ in einem Java-Schlüsselspeicher und Kopieren in eine PKCS12 Datei mit dem Namen myp12file.p12 nehmen. [Beachten Sie, dass auf den meisten Bildschirmen dieser Befehl erstreckt sich über die rechte Seite der Box: Sie müssen rechts scrollen, um alles zu sehen]

keytool -v -importkeystore -srckeystore .keystore -srcalias mykey -destkeystore myp12file.p12 -deststoretype PKCS12
Enter destination keystore password:  
Re-enter new password: 
Enter source keystore password:  
[Storing myp12file.p12]

Nun ist die Datei myp12file.p12 enthält die privaten Schlüssel in PKCS12-Format, das von vielen Software-Paketen direkt verwendet werden kann oder weiterverarbeitet werden mit dem openssl pkcs12 Befehl. Zum Beispiel:

openssl pkcs12 -in myp12file.p12 -nocerts -nodes
Enter Import Password:
MAC verified OK
Bag Attributes
    friendlyName: mykey
    localKeyID: 54 69 6D 65 20 31 32 37 31 32 37 38 35 37 36 32 35 37 
Key Attributes: <No Attributes>
-----BEGIN RSA PRIVATE KEY-----
MIIC...
.
.
.
-----END RSA PRIVATE KEY-----

Druckt der private Schlüssel unverschlüsselt.

Beachten Sie, dass dies ein privaten Schlüssel und Sie sind verantwortlich für die Wertschätzung der Auswirkungen auf die Sicherheit davon aus Ihrer Java-Schlüsselspeicher zu entfernen und es bewegen.

Andere Tipps

Verwenden Schlüsselspeicher Explorer gui - http://keystore-explorer.sourceforge.net/ - erlaubt Sie die privaten Schlüssel aus einem .jks in verschiedenen Formaten zu extrahieren.

http://anandsekar.github.io / Export-the-Private-Key-from-a-JKS-Keystor /

public class ExportPrivateKey {
        private File keystoreFile;
        private String keyStoreType;
        private char[] password;
        private String alias;
        private File exportedFile;

        public static KeyPair getPrivateKey(KeyStore keystore, String alias, char[] password) {
                try {
                        Key key=keystore.getKey(alias,password);
                        if(key instanceof PrivateKey) {
                                Certificate cert=keystore.getCertificate(alias);
                                PublicKey publicKey=cert.getPublicKey();
                                return new KeyPair(publicKey,(PrivateKey)key);
                        }
                } catch (UnrecoverableKeyException e) {
        } catch (NoSuchAlgorithmException e) {
        } catch (KeyStoreException e) {
        }
        return null;
        }

        public void export() throws Exception{
                KeyStore keystore=KeyStore.getInstance(keyStoreType);
                BASE64Encoder encoder=new BASE64Encoder();
                keystore.load(new FileInputStream(keystoreFile),password);
                KeyPair keyPair=getPrivateKey(keystore,alias,password);
                PrivateKey privateKey=keyPair.getPrivate();
                String encoded=encoder.encode(privateKey.getEncoded());
                FileWriter fw=new FileWriter(exportedFile);
                fw.write(“—–BEGIN PRIVATE KEY—–\n“);
                fw.write(encoded);
                fw.write(“\n“);
                fw.write(“—–END PRIVATE KEY—–”);
                fw.close();
        }


        public static void main(String args[]) throws Exception{
                ExportPrivateKey export=new ExportPrivateKey();
                export.keystoreFile=new File(args[0]);
                export.keyStoreType=args[1];
                export.password=args[2].toCharArray();
                export.alias=args[3];
                export.exportedFile=new File(args[4]);
                export.export();
        }
}

public static void main (String [] args) {

try {
        String keystorePass = "20174";
        String keyPass = "rav@789";
        String alias = "TyaGi!";
        InputStream keystoreStream = new FileInputStream("D:/keyFile.jks");
        KeyStore keystore = KeyStore.getInstance("JCEKS");
        keystore.load(keystoreStream, keystorePass.toCharArray());
        Key key = keystore.getKey(alias, keyPass.toCharArray());

        byte[] bt = key.getEncoded();
        String s = new String(bt);
        System.out.println("------>"+s);      
        String str12 = Base64.encodeBase64String(bt);

        System.out.println("Fetched Key From JKS : " + str12);

    } catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException | UnrecoverableKeyException ex) {
        System.out.println(ex);

    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top