Different types of keystore in Java -- DKS

  Pi Ke        2015-01-20 02:27:27       13,763        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

Khoá lưu trữ miền (DKS) là một khoá lưu trữ của khoá lưu trữ. Nó trừu tượng hoá một tập hợp các khoá lưu trữ được trình bày như một khoá lưu trữ logic duy nhất. Bản thân nó thực chất không phải là một khoá lưu trữ. Loại khoá lưu trữ mới này được giới thiệu trong Java 8. Có một lớp mới DomainLoadStoreParameter có liên quan chặt chẽ đến DKS.

Để tải các khoá lưu trữ khác nhau vào khoá lưu trữ logic duy nhất, cần một số cấu hình. Dưới đây là định dạng cấu hình để nhóm các khoá lưu trữ khác nhau.

domain  [ ...] {
         keystore  [ ...] ;
         ...
};

Dưới đây là một ví dụ cấu hình cho miền domain.

domain app1 {
     keystore app1-truststore
         keystoreURI="file:///app1/etc/truststore.jks";

     keystore system-truststore
         keystoreURI="${java.home}/lib/security/cacerts";

     keystore app1-keystore
         keystoreType="PKCS12"
         keystoreURI="file:///app1/etc/keystore.p12";
 };

Cấu hình này định nghĩa một miền app1 và nó chứa ba khoá lưu trữ. Có keystoreName được chỉ định cho mỗi khoá lưu trữ được chứa (app1-truststore, system-truststore, app1-keystore). Lưu ý, keystoreName phải là duy nhất cho mỗi mục.

Theo sau keystoreName là một tập hợp các thuộc tính cho khoá lưu trữ. Các thuộc tính này bao gồm keystoreURI, keystoreType, keystoreProviderName, keystorePasswordEnv, entryNameSeparator. Tên thuộc tính được tự giải thích.

Khi tải khoá lưu trữ DKS, một đối tượng DomainLoadStoreParameter được tạo và truyền vào KeyStore.load(). Dưới đây là một đoạn mã ví dụ để tải khoá lưu trữ DKS.

Map<String, KeyStore.ProtectionParameter> PASSWORDS =
        new HashMap<String, KeyStore.ProtectionParameter>() {{
            put("keystore",
                new KeyStore.PasswordProtection("test123".toCharArray()));
            put("policy_keystore",
                new KeyStore.PasswordProtection(
                    "Alias.password".toCharArray()));
            put("pw_keystore",
                new KeyStore.PasswordProtection("test12".toCharArray()));
            put("eckeystore1",
                new KeyStore.PasswordProtection("password".toCharArray()));
            put("eckeystore2",
                new KeyStore.PasswordProtection("password".toCharArray()));
            put("truststore",
                new KeyStore.PasswordProtection("changeit".toCharArray()));
            put("empty",
                new KeyStore.PasswordProtection("passphrase".toCharArray()));
}};
URI config = new URI(CONFIG + "#system");
KeyStore keystore = KeyStore.getInstance("DKS");
keystore.load(new DomainLoadStoreParameter(config, PASSWORDS));

config là đường dẫn cấu hình cho khoá lưu trữ DKS và PASSWORDS là bản đồ chứa mật khẩu tương ứng cho khoá lưu trữ được định nghĩa trong tệp cấu hình.

DKS cũng hỗ trợ tải một InputStream, trong trường hợp này, InputStream phải là một luồng khoá lưu trữ duy nhất có loại khoá lưu trữ là JKS hoặc KeyStore.getDefaultType(). Ví dụ: đoạn mã dưới đây sẽ tải một khoá lưu trữ JKS bằng DKS.

char[] PASSWORD = <PASSWORD>;
KeyStore keyStore = KeyStore.getInstance("DKS");, 
keyStore.load(new FileInputStream("keystore.jks"), PASSWORD);

Sau khi khoá lưu trữ được tải, các thao tác khoá lưu trữ khác giống như các thao tác đối với các loại khoá lưu trữ khác như JKS. Đối với các thao tác tạo khoá và chứng chỉ, vui lòng đọc Các loại khoá lưu trữ khác nhau trong Java -- JKS.

JAVA  KEYSTORE  DKS  TUTORIAL 

       

  RELATED


  0 COMMENT


No comment for this article.



  RANDOM FUN

CAPTCHA : STONE SOUP