您的.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.)
您的.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.)