Programing

프로그래밍 방식으로 새 키 저장소를 생성하려면 어떻게합니까?

즐거운 cyworld 2021. 1. 11. 07:30
반응형

프로그래밍 방식으로 새 키 저장소를 생성하려면 어떻게합니까?


Java에서 프로그래밍 방식으로 새 키 저장소를 만들려고합니다. 다음 코드 :

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.setCertificateEntry("alias", cert);

초기화되지 않은 키 저장소 예외가 발생합니다.


키 스토어는 생성 된 후로드되어야합니다. 로드 메소드는 읽을 FileInputStream을 요청하지만 널을 제공하면 빈 키 스토어가로드됩니다.

이 링크 보기


Java로 새 키 스토어를 생성하려면 먼저 키 스토어 파일을 생성 한 다음 store(FileOutputStream, char[])메소드를 사용하여 저장해야합니다 .

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

char[] password = "some password".toCharArray();
ks.load(null, password);

// Store away the keystore.
FileOutputStream fos = new FileOutputStream("newKeyStoreFileName");
ks.store(fos, password);
fos.close();

도움이 되었기를 바랍니다 . 여기에서 자세한 정보를 볼 수 있습니다 .


이 코드를 사용하면 작동하며 도움이되기를 바랍니다.

public static KeyStore createKeyStore() throws Exception {
    File file = new File("/Users/keyserverstore.keystore");
    KeyStore keyStore = KeyStore.getInstance("JKS");
    if (file.exists()) {
        // if exists, load
        keyStore.load(new FileInputStream(file), "123456".toCharArray());
    } else {
        // if not exists, create
        keyStore.load(null, null);
        keyStore.store(new FileOutputStream(file), "123456".toCharArray());
    }
    return keyStore;
}

 // load the keystore
 KeyStore p12 = KeyStore.getInstance("pkcs12");
 p12.load(new FileInputStream("KEYSTORE.p12"), "passwd".toCharArray());

// load the private key entry from the keystore  
 Key key = p12.getKey("mykey", "passwd".toCharArray()); 
 PrivateKey privKey = (PrivateKey) key;

public static void main(String[] args) {
    // Load the JDK's cacerts keystore file
    String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);
    FileInputStream is = new FileInputStream(filename);
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
    char[] password = "changeit".toCharArray();
    //keystore.load(is, password.toCharArray());
    keystore.load(is, password);

    // This class retrieves the most-trusted CAs from the keystore
    PKIXParameters params = new PKIXParameters(keystore);
    // Get the set of trust anchors, which contain the most-trusted CA certificates
    java.security.cert.Certificate sapcert = keystore.getCertificate("SAPNetCA");
    PublicKey sapcertKey =  sapcert.getPublicKey();
    System.out.println(sapcertKey);
    Enumeration<String> aliases = keystore.aliases();
    while (aliases.hasMoreElements()) {
       String alias = aliases.nextElement();
        //System.out.println("alias certificates :"+alias);
       if (keystore.isKeyEntry(alias)) {
            keystore.getKey(alias, password);
        }
    }

참조 URL : https://stackoverflow.com/questions/5312559/how-do-i-programmatically-create-a-new-keystore

반응형