2010-06-12 36 views

Trả lời

21

Lưu trữ:

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

Note thét certChain có thể là null, trừ khi bạn đang đi qua PrivateKey

Chở Hàng:

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

Đọc EDIT javadocs

:

Lưu ý rằng nếu bạn đang lưu trữ một Khóa bí mật hoặc sử dụng bất kỳ phần nào của nhà cung cấp SunJCE (Phần mở rộng Mật mã Java), bạn sẽ cần phải đặt loại KeyStore của bạn thành JCEKS.

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

Tôi đánh giá cao nếu bạn giải thích thế nào tôi có thể sử dụng điều này với ssl/ứng dụng tls tôi (sslserversocketfactory) tôi cần phải cung cấp cho nó con đường của một chứng chỉ CA

3

tôi đã có một tình huống mà tôi đã không Tôi không biết tên bí danh chính, nhưng tôi biết chỉ có một khóa ở đó trong kho khóa. Tôi sử dụng đoạn mã sau để tải các khóa (sau khi tải keystore như trình bày ở trên):

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(); 

Tôi đã thêm một post on my blog với các chi tiết làm thế nào để tải các khóa riêng, khóa công khai và làm thế nào để sử dụng chúng.

Các vấn đề liên quan