回覆列表
  • 1 # 使用者4974543243438

    您的.key和.crt檔案可能是PEM格式.要檢查這個,使用文字編輯器開啟它們,並檢查內容是否看起來像—— BEGIN CERTIFICATE ——(或“開始RSA私鑰”…).這通常是OpenSSL使用的預設格式,除非您明確指定DER.

    它可能不是必需的(見下文),但如果您的證書是DER格式(二進位制格式),則可以使用以下格式轉換PEM格式:

    openssl x509 -inform DER -in cert.crt -outform PEM -out cert.pem

    (如果需要,請檢查openssl rsa的幫助以執行與私鑰類似的操作.)

    然後,您將獲得兩個選項:

    >構建PKCS#12檔案

    openssl pkcs12 -export -in myhost.crt -inkey myhost.key -out myhost.p12

    然後,您可以直接從Java將其用作“PKCS12”型別的金鑰庫.除了檔案位置之外,大多數Java應用程式都應允許您指定金鑰庫型別.對於預設系統屬性,這是透過javax.net.ssl.keyStoreType完成的(但是您使用的應用程式可能不會使用此屬性).否則,如果要顯式載入,請使用以下內容:

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

    FileInputStream fis =

    new FileInputStream("/path/to/myhost.p12");

    ks.load(fis, "password".toCharArray()); // There are other ways to read the password.

    fis.close();

    (然後,您應該可以遍歷KeyStore的aliases(),並使用getCertificate(然後使用getPublicKey()作為公鑰)和getKey().

    FileReader fr = ... // Create a FileReader for myhost.crt

    PEMReader pemReader = new PEMReader(fr);

    X509Certificate cert = (X509Certificate)pemReader.readObject();

    PublicKey pk = cert.getPublicKey();

    // Close reader...

    對於私鑰,如果私鑰受密碼保護,則需要實施一個PasswordFinder(請參閱PEMReader文件的連結),以構造PEMReader. (您需要將readObject()的結果轉換為Key或PrivateKey.)

  • 中秋節和大豐收的關聯?
  • 清風唯美句子?