Java支援的keystore格式

gladmustang發表於2014-12-29

PKCS12和JKS是keystore的格式,但是P12是不支援TrustedCertificateEntry的,如果要寫入信任證照,只能使用JKS

關於KeyStore,JDK文件如下解釋:

http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/security/KeyStore.html

 

KeyStore 管理不同型別的項。每種型別的項都實現 KeyStore.Entry 介面。提供了三種基本的 KeyStore.Entry 實現:

  • KeyStore.PrivateKeyEntry

    此型別的項儲存一個加密的 PrivateKey,可以選擇以受保護格式儲存該私鑰來防止未授權訪問。它也隨附一個相應公鑰的證照鏈。

    給定項使用私鑰和證照鏈進行自驗證 (self-authentication)。應用此驗證的包括軟體釋出組織,它們將 JAR 檔案簽名為釋出和/或許可軟體的一部分。

  • KeyStore.SecretKeyEntry

    此型別的項儲存一個加密的 SecretKey,可以選擇以受保護格式儲存該金鑰來防止未授權訪問。

  • KeyStore.TrustedCertificateEntry

    此型別的項包含一個屬於另一方的單個公鑰 Certificate。它被稱為可信證照,因為 keystore 的所有者相信證照中的公鑰確實屬於由該證照的 subject(所有者)所標識的身份。

    此型別的項可以用來驗證其他方。

keystore 中的每一項都用“別名”字串標識。對於私鑰和與它們相關的證照鏈,這些字串用來區分實體驗證自身可以採用的不同方式。例如,實體可以使用不同的證照授權或不同的公鑰演算法來驗證本身。

在此沒有指定 keystore 是否是永續性的,也沒有指定 keystore 是永續性時所使用的機制。這允許使用各種技術保護敏感的(例如,私有的或祕密的)金鑰。一種選擇是使用智慧卡或其他整合加密引擎 (SafeKeyper),也可以使用諸如檔案之類的更加簡單的機制(以各種格式)。

請求 KeyStore 物件的典型方式包括使用預設型別和提供一個特定的 keystore 型別。

  • 根據預設型別:
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
     
    系統將返回預設型別的 keystore 實現。

  • 提供特定的 keystore 型別:
          KeyStore ks = KeyStore.getInstance("JKS");
     
    系統將返回環境中可用的指定 keystore 型別的首選實現。

相關文章