2010-06-12 3 views

답변

21

보관 :

KeyStore ks = KeyStore.getInstance("JKS"); 
InputStream readStream = new FileInputStream(filePathToStore); 
ks.load(readStream, keystorePasswordCharArray); 
Key key = ks.getKey("keyAlias", passwordForKeyCharArray); 
readStream.close(); 

javadocs

편집 읽기 :

,691 당신이 PrivateKey

로드를 통과하지 않는

KeyStore ks = KeyStore.getInstance("JKS"); 
ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain); 
OutputStream writeStream = new FileOutputStream(filePathToStore); 
ks.store(writeStream, keystorePasswordCharArray); 
writeStream.close(); 

참고 텟의 certChain가 null 수 있습니다

SecretKey를 저장하거나 SunJCE 제공자 (Java 암호화 확장자)의 일부를 사용하는 경우 KeyStore 유형을 JCEKS로 설정해야합니다.

KeyStore ks = KeyStore.getInstance("JCEKS"); 

당신은 내가 내 SSL/TLS 응용 프로그램 (sslserversocketfactory)와 이것을 사용하는 방법을 설명하면 내가 그것을 CA 인증서

3

내가 didn를 상황이 있었다의 경로를 제공해야 감사하겠습니다 키 별칭 이름을 알지 못했지만 키 저장소에 키가 하나 밖에 없다는 것을 알았습니다. 나는 (위의 그림과 같이 키 스토어를로드 한 후) 키를로드하려면 다음 코드를 사용 :

Enumeration<String> aliases = keyStore.aliases(); 
String alias = aliases.nextElement(); 
KeyStore.PrivateKeyEntry keyEnt = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, 
        new KeyStore.PasswordProtection(keystorePass.toCharArray())); 
PrivateKey privateKey = keyEnt.getPrivateKey(); 

내가 개인 키, 공개 키와 사용 방법을로드하는 방법에 대한 자세한 내용과 함께 post on my blog을 추가했습니다.

관련 문제