java jceks 密钥_Java中不同类型的密钥库(Keystore) – 概述
閱讀:
877
密鑰庫是用于存儲加密密鑰和證書的存儲工具 ,最常用于SSL通信,以證明服務器和客戶端的身份。密鑰庫可以是文件或硬件設備。有三種類型的條目可以存儲在密鑰庫中,取決于密鑰庫的類型,這三種類型的條目分別是:
PrivateKey:用于非對稱加密的密鑰,通常由于其敏感性而受密碼保護。它還可用于簽署數字簽名;
Certificate證書:證書包含一個公鑰,可以識別證書中聲明的主題 (Subject)。它通常用于驗證服務器的身份。有時,它還用于在請求時識別客戶端的身份,如雙向認證時;
SecretKey:在對稱加密中使用的密鑰條目;
根據密鑰庫可以存儲的條目以及密鑰庫如何存儲條目,Java中有幾種不同類型的密鑰庫:JKS,JCEKS,PKCS12,PKCS11和DKS。最常見的是JKS,JCEKS,PKCS12類型,我們將主要介紹這三種。可以在Oracle的Java Cryptography Architecture描述中找到這些密鑰庫的介紹。
接下來,我們將簡要介紹這些密鑰庫類型:
JKS,Java
Key Store。可以參見sun.security.provider.JavaKeyStore類,此密鑰庫是特定于Java平臺的,通常具有jks的擴展名。此類型的密鑰庫可以包含私鑰和證書,但不能用于存儲密鑰。由于它是Java特定的密鑰庫,因此不能在其他編程語言中使用。存儲在JKS中的私鑰無法在Java中提取。
JCEKS,JCE密鑰庫(Java Cryptography
Extension KeyStore)。可以認為是增強式的JKS密鑰庫,支持更多算法。可以參考com.sun.crypto.provider.JceKeyStore類,此密鑰庫具有jceks的擴展名。可以放入JCEKS密鑰庫的條目是私鑰,密鑰和證書。此密鑰庫通過使用Triple DES加密為存儲的私鑰提供更強大的保護。
JCEKS的提供者是SunJCE,它是在Java 1.4中引入的。因此,在Java 1.4之前,只能使用JKS。
PKCS12,一種標準的密鑰庫類型,可以在Java和其他語言中使用。可以參考sun.security.pkcs12.PKCS12KeyStore類。它通常具有p12或pfx的擴展名。可以在此類型上存儲私鑰,密鑰和證書。與JKS不同,PKCS12密鑰庫上的私鑰可以用Java提取。此類型是可以與其他語言(如C,C
++或C#)編寫的其他庫一起使用。
目前,Java中的默認密鑰庫類型是JKS,即如果在使用keytool創建密鑰庫時未指定-storetype,則密鑰庫格式將為JKS。但是,默認密鑰庫類型將在Java 9中更改為PKCS12,因為與JKS相比,它具有增強的兼容性。可以在$ JRE / lib / security / java.security文件中檢查默認密鑰庫類型。
PKCS11,一種硬件密鑰庫類型。 為Java庫提供了一個接口,用于連接硬件密鑰庫設備,如智能卡。 可以參考sun.security.pkcs11.P11KeyStore類。? 此密鑰庫可以存儲私鑰,密鑰和證書。 加載密鑰庫時,將從密鑰庫中檢索條目,然后將其轉換為軟件成勛可識別的條目;
BKS,BoucyCastle密鑰庫,是一種密鑰庫格式,提供了流行的第三方Java加密庫提供程序–BouncyCastle。它是一個類似于Oracle JDK提供的JKS的密鑰庫。支持存儲密鑰,私鑰和證書,經常用于移動應用程序開發。
在Java中,有一些關于如何處理密鑰庫的選擇。編寫Java代碼是一種選擇。除此之外,還可以使用JDK附帶的工具keytool;
keytool是一個命令行工具。它可用于創建密鑰庫,生成密鑰,導入和導出證書等。有關keytool支持的命令的完整列表,可以參考Oracle keytool準則;
如果使用的是IBM JDK,還有一個可以使用的工具,它是ikeyman。 ikeyman是一個GUI工具,可以提供密鑰庫的直觀視圖。密鑰庫中的條目。也可以使用ikeyman創建密鑰和證書。它是系統管理員經常使用的工具。
JKS,Java
Key Store詳細介紹
JKS是Java Keystore,一種專為Java設計的專有密鑰庫類型。 可以用于存儲用于SSL通信的私鑰和證書,但是它不能存儲密鑰。 JDK附帶的keytool無法提取存儲在JKS上的私鑰。 這種類型的密鑰庫通常具有jks的擴展名。
接下來,將展示如何使用Java代碼操作JKS密鑰庫;
創建JKS密鑰庫
創建JKS密鑰庫以創建空密鑰庫的最簡單方法。 可以先獲取KeyStore的實例,然后加載null密鑰庫。 加載null密鑰庫后,只需要使用密鑰庫的密鑰庫名稱和密碼調用KeyStore.store();
以下是一個簡單的演示:
try{
KeyStore keyStore =
KeyStore.getInstance(“JKS”);
keyStore.load(null,null);
keyStore.store(new
FileOutputStream(“mytestkey.jks”),
“password”.toCharArray());
}catch(Exception
ex){
ex.printStackTrace();
}
執行上述調用后,將在當前工作目錄中看到名為mytestkey.jks的密鑰庫。 現在該密鑰庫是空的,沒有任何條目。
存儲私鑰
現在將一個私鑰及其關聯的證書鏈存儲到密鑰庫中。 注意,無法使用JDK將沒有關聯證書鏈的私鑰存儲到密鑰庫中。
try{
KeyStore keyStore =
KeyStore.getInstance(“JKS”);
keyStore.load(new
FileInputStream(“mytestkey.jks”),”password”.toCharArray());
CertAndKeyGen gen = new
CertAndKeyGen(“RSA”,”SHA1WithRSA”);
gen.generate(1024);
Key key=gen.getPrivateKey();
X509Certificate
cert=gen.getSelfCertificate(new X500Name(“CN=ROOT”),
(long)365*24*3600);
X509Certificate[] chain = new X509Certificate[1];
chain[0]=cert;
keyStore.setKeyEntry(“mykey”,
key, “password”.toCharArray(), chain);
keyStore.store(new
FileOutputStream(“mytestkey.jks”),
“password”.toCharArray());
}catch(Exception
ex){
ex.printStackTrace();
}
首先,將創建一個私鑰和一個自簽名證書,然后使用指定的別名,密鑰,密鑰及其相關證書鏈的密碼調用KeyStore.setKeyEntry(),需要調用KeyStore.store()將密鑰存儲到密鑰庫中。
存儲證書
可以在JKS密鑰庫上存儲證書。 要存儲的證書應該是X509證書格式。 可以存儲在密鑰庫中,而無需關聯的私鑰。 此過程類似于存儲私鑰。
try{
KeyStore keyStore =
KeyStore.getInstance(“JKS”);
keyStore.load(new FileInputStream(“mytestkey.jks”),”password”.toCharArray());
CertAndKeyGen gen = new
CertAndKeyGen(“RSA”,”SHA1WithRSA”);
gen.generate(1024);
X509Certificate
cert=gen.getSelfCertificate(new X500Name(“CN=SINGLE_CERTIFICATE”),
(long)365*24*3600);
keyStore.setCertificateEntry(“single_cert”, cert);
keyStore.store(new
FileOutputStream(“mytestkey.jks”),
“password”.toCharArray());
}catch(Exception
ex){
ex.printStackTrace();
}
加載私鑰
存儲密鑰后,還可以在密鑰庫中加載條目,如加載私鑰,如前所述,私鑰不能使用Java從JKS中提取。 在本例中,實際上提取了私鑰的證書鏈;
try{
KeyStore keyStore =
KeyStore.getInstance(“JKS”);
keyStore.load(new
FileInputStream(“mytestkey.jks”),”password”.toCharArray());
Key key =
keyStore.getKey(“mykey”, “password”.toCharArray());
//????????? System.out.println(“Private key
: “+key.toString());?? //You will
get a NullPointerException if you uncomment this line
java.security.cert.Certificate[] chain
=
keyStore.getCertificateChain(“mykey”);
for(java.security.cert.Certificate
cert:chain){
System.out.println(cert.toString());
}
}catch(Exception
ex){
ex.printStackTrace();
}
如下所示,可以正常獲得證書鏈:
[
[
Version: V3
Subject: CN=ROOT
Signature Algorithm: SHA1withRSA, OID =
1.2.840.113549.1.1.5
Key:
Sun RSA public key, 1024 bits
modulus:
90980299845597512779139009881469177009407272139633139241921529845092210461181243924599150259446249079941561941533303439718936138867375776965995893255358889228584415558006141961051402385279285497775776996780406808976543439543789816486513982581378223575354716191394304768315366544413052547926792470794374067383
public exponent: 65537
Validity: [From: Sat Sep 06 09:57:28 CST
2014,
To: Sun Sep 06 09:57:28 CST
2015]
Issuer: CN=ROOT
SerialNumber: [??? 206b697b]
]
Algorithm: [SHA1withRSA]
Signature:
0000: 53 6A FD FE
E6 3A 5E 6E?? A6 43 C4 F4 D1 56 D4
08? Sj…:^n.C…V..
0010: 7E 3B 8B 73
68 71 56 AB?? 96 FE 24 E7 2D DC 04
BB? .;.shqV…$.-…
0020: 14 B0 C6 71
8D F0 3E EC?? FE D8 5B BB 8C 0F 55
63? …q..>…[…Uc
0030: 2B 38 8E 45
F1 2D F0 BB?? 8C 6D 13 A8 11 37 E1
FA? +8.E.-…m…7..
0040: 77 AF C7 73
72 2B 40 4F?? 74 32 F6 3C 24 E6 AB
ED? w..sr+@Ot2.
0050: 2C 6F 19 2E
DC 58 5F CB?? 75 62 40 2F 3E BE 59
99? ,o…X_.ub@/>.Y.
0060: C0 1F 7A 70
15 AF C3 66?? B3 4F C9 11 C3 45 59
EF? ..zp…f.O…EY.
0070: 36 F4 1C C9
9B FA 5E 43?? A0 28 DB 07 0D F2 53
6E? 6…..^C.(….Sn
]
加載證書
這類似于加載私鑰,需要傳遞想要提取的證書的別名;
try{
KeyStore keyStore =
KeyStore.getInstance(“JKS”);
keyStore.load(new
FileInputStream(“mytestkey.jks”),”password”.toCharArray());
java.security.cert.Certificate cert =
keyStore.getCertificate(“single_cert”);
System.out.println(cert.toString());
}catch(Exception
ex){
ex.printStackTrace();
}
輸出為:
[
[
Version: V3
Subject: CN=SINGLE_CERTIFICATE
Signature Algorithm: SHA1withRSA, OID =
1.2.840.113549.1.1.5
Key:
Sun RSA public key, 1024 bits
modulus:
99756834215197288877309915243024788596281418171661241282881476656110879586349799740269767889529808199104172091786860877280382867461569439907754755558759387462421169749111354565793974372777424046360810758009149155148290676527032833774084635148674232352006810533640038723102562578516643345287042787777951043863
public exponent: 65537
Validity: [From: Sat Sep 06 10:14:33 CST
2014,
To: Sun Sep 06 10:14:33 CST
2015]
Issuer: CN=SINGLE_CERTIFICATE
SerialNumber: [??? 6943e549]
]
Algorithm: [SHA1withRSA]
Signature:
0000: 35 58 70 96
F4 35 82 2A?? 95 9F BB 31 02 6E 7C
29? 5Xp..5.*…1.n.)
0010: 4A FE AF EB
2D B5 3A A7?? C7 9D 4C 9A 34 2C 5C
46? J…-.:…L.4,\F
0020: C2 82 A8 AC
1A C0 98 A5?? 67 21 74 7B 1E E2 E5
AC? ……..g!t…..
0030: DE B2 1D 87
BE 16 45 9B?? D0 2A D3 2B F6 E1 4B
35? ……E..*.+..K5
0040: 27 8B A7 0A
EF F2 07 41?? 90 A6 69 07 BE 87 C5
B1? ‘……A..i…..
0050: 54 DE DB A2
5A 41 47 3B?? 3F A7 74 6F 5C C8 8D
B4? T…ZAG;?.to\…
0060: C8 65 2B 0F
8E 94 A8 80?? C7 8B B5 78 FA C2 9C
ED? .e+……..x….
0070: 8E EC 28 E4
8E 62 A1 59?? 6A BC 37 7B 0D FC C7
AF? ..(..b.Yj.7…..
]
導入密鑰和證書
首先需要加載要導入證書的密鑰庫,然后加載另一個需要導入證書的密鑰庫。 接下來,需要從源密鑰庫獲取證書并將其放入目標密鑰庫。
由于無法從JKS中提取私鑰,因此只能將證書導入JKS。 但是可以從其他類型的密鑰庫(PKCS12)中提取私鑰,然后將它們存儲在JKS密鑰庫中;
需要注意的是Oracle提供了兩個版本的JKS密鑰庫:區分大小寫且不區分大小寫。 調用KeyStore.getInstance(“JKS”)時,會創建一個不區分大小寫的JKS實例版本,當調用KeyStore.getInstance(“CaseExactJKS”)時,將創建一個區分大小寫的JKS實例版本。
Java中不同類型的密鑰庫–? JCEKS
JCEKS代表Java Cryptography Extension KeyStore,是Java平臺的另一種密鑰庫格式。 在KeyStore中存儲密鑰是一種防止加密密鑰泄漏的措施。
Java KeyStore安全地包含可由別名引用的證書和密鑰,以便在Java程序中使用。
在JCEKS中存儲和加載不同條目的過程與JKS類似。 所以請參閱Java中的不同類型的密鑰庫—JKS上一節。 在調用KeyStore.getInstance()時,相應地將密鑰庫類型從JKS更改為JCEKS。在JCEKS密鑰庫中存儲密鑰的過程。 密鑰條目將被存儲在密鑰庫中以保護密鑰數據。 將條目存儲到密鑰庫時,請提供密碼。
存儲密鑰
密鑰可以存儲在JCEKS密鑰庫中,代碼如下:
try{
KeyStore keyStore =
KeyStore.getInstance(“JCEKS”);
keyStore.load(null, null);
KeyGenerator keyGen =
KeyGenerator.getInstance(“DES”);
keyGen.init(56);;
Key key = keyGen.generateKey();
keyStore.setKeyEntry(“secret”,
key, “password”.toCharArray(), null);
keyStore.store(new
FileOutputStream(“output.jceks”),
“password”.toCharArray());
} catch (Exception
ex) {
ex.printStackTrace();
}
加載密鑰
可以從Java中的JCEKS密鑰庫中提取存儲的密鑰。 提取的密鑰可以用于正常加密/解密數據:
try{
KeyStore keyStore =
KeyStore.getInstance(“JCEKS”);
keyStore.load(new
FileInputStream(“output.jceks”), “password”.toCharArray());
Key key =
keyStore.getKey(“secret”, “password”.toCharArray());
System.out.println(key.toString());
} catch (Exception
ex) {
ex.printStackTrace();
}
輸出為:
Java中不同類型的密鑰庫–? PKCS12
PKCS12用于將加密對象,如密鑰等,存儲為單個文件, 它可用于存儲密鑰,私鑰和證書。它是RSA實驗室發布的標準化格式,它不僅可以用于Java,還可以用于C,C ++或C#等其他庫。該文件格式 經常用于從其他密鑰庫類型導入和導出條目。
創建PKCS12密鑰庫
在將條目存儲到PKCS12密鑰庫之前,必須首先加載密鑰庫。 必須首先創建一個密鑰庫。 創建PKCS12密鑰庫的最簡單方法是:
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
keyStore.load(null, null);
keyStore.store(new
FileOutputStream(“output.p12”), “password”.toCharArray());
} catch (Exception
ex){
ex.printStackTrace();
}
注意,當調用keyStore.load(null,null)時,會傳遞兩個空值作為輸入密鑰庫流和密碼。 運行此程序后,當前工作目錄中應該有一個名為output.p12的密鑰庫文件。
存儲密鑰
PKCS12允許存儲密鑰。 密鑰常用于加密/解密數據。 為了方便地傳輸密鑰,可以存儲在像PKCS12這樣的密鑰庫中并進行傳輸。
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
keyStore.load(null, null);
KeyGenerator keyGen =
KeyGenerator.getInstance(“AES”);
keyGen.init(128);
Key key = keyGen.generateKey();
keyStore.setKeyEntry(“secret”,
key, “password”.toCharArray(), null);
keyStore.store(new
FileOutputStream(“output.p12”), “password”.toCharArray());
} catch (Exception
ex){
ex.printStackTrace();
}
存儲私鑰
私鑰及其關聯的證書鏈可以存儲在PKCS12密鑰庫中。 密鑰庫包含私鑰,證書可用于Web上的SSL通信。
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
//? keyStore.load(new
FileInputStream(“output.p12″),”password”.toCharArray());
keyStore.load(null, null);;
CertAndKeyGen gen = new
CertAndKeyGen(“RSA”,”SHA1WithRSA”);
gen.generate(1024);
Key key=gen.getPrivateKey();
X509Certificate
cert=gen.getSelfCertificate(new X500Name(“CN=ROOT”),
(long)365*24*3600);
X509Certificate[] chain = new
X509Certificate[1];
chain[0]=cert;
keyStore.setKeyEntry(“private”,
key, “password”.toCharArray(), chain);
keyStore.store(new
FileOutputStream(“output.p12”), “password”.toCharArray());
}catch(Exception
ex){
ex.printStackTrace();
}
使用CertAndKeyGen生成RSA私鑰,生成關聯的證書。 然后通過調用keyStore.setEntry()將密鑰條目存儲在keyStore中。 不要忘記通過調用keyStore.store()來保存keyStore。
存儲證書
PKCS12密鑰庫允許自己存儲證書而不存儲相應的私鑰。 要存儲證書,可以調用KeyStore.setCertificateEntry();
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
//? keyStore.load(new
FileInputStream(“output.p12″),”password”.toCharArray());
keyStore.load(null, null);;
CertAndKeyGen gen = new
CertAndKeyGen(“RSA”,”SHA1WithRSA”);
gen.generate(1024);
X509Certificate
cert=gen.getSelfCertificate(new X500Name(“CN=ROOT”),
(long)365*24*3600);
keyStore.setCertificateEntry(“cert”, cert);
keyStore.store(new
FileOutputStream(“output.p12”), “password”.toCharArray());
}catch(Exception
ex){
ex.printStackTrace();
}
可以通過使用提供的別名調用KeyStore.getCertificate()來提取存儲的證書。 例如 :
Certificate cert =
keyStore.getCertificate(“cert”);
加載私鑰
PKCS12密鑰庫與其他密鑰庫(如JKS)之間的一個區別是,可以提取PKCS12的私鑰。 可以使用提供的正確密碼正確提取私鑰。
try{
KeyStore keyStore = KeyStore.getInstance(“PKCS12”);
keyStore.load(new
FileInputStream(“output.p12”), “password”.toCharArray());
Key pvtKey =
keyStore.getKey(“private”, “password”.toCharArray());
System.out.println(pvtKey.toString());
} catch (Exception
ex){
ex.printStackTrace();
}
上面代碼的輸出是:
加載證書鏈
如果證書鏈存儲在密鑰庫中,則可以通過調用KeyStore.getCertificateChain()來加載。 下面的代碼用于提取關聯私鑰的關聯證書鏈。
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
keyStore.load(new
FileInputStream(“output.p12”), “password”.toCharArray());
Key pvtKey =
keyStore.getKey(“private”, “password”.toCharArray());
System.out.println(pvtKey.toString());
java.security.cert.Certificate[] chain =
keyStore.getCertificateChain(“private”);
for(java.security.cert.Certificate
cert:chain){
System.out.println(cert.toString());
}
} catch (Exception
ex){
ex.printStackTrace();
}
輸出為:
[
[
Version: V3
Subject: CN=ROOT
Signature Algorithm: SHA1withRSA, OID =
1.2.840.113549.1.1.5
Key:
Sun RSA public key, 1024 bits
modulus:
107262652552256813768678166856978781385254195794582600239703451044252881438814396239031781495369251659734172714120481593881055888193254336293673302267462500060447786562885955334870856482264000504019061160524587434562257067298291769329550807938162702640388267016365640782567817416484577163775446236245223552189
public exponent: 65537
Validity: [From: Mon Jan 05 13:03:29 SGT
2015,
To: Tue Jan 05 13:03:29 SGT
2016]
Issuer: CN=ROOT
SerialNumber: [??? 5e5ca8a4]
]
Algorithm: [SHA1withRSA]
Signature:
0000: 22 21 BF 73
A6 6D 12 9B?? F7 49 6C 0E B3 50 6A
9D? “!.s.m…Il..Pj.
0010: FA 30 43 22
32 FF 54 95?? 80 2E B3 8B 6F 59 D4
B5? .0C”2.T…..oY..
0020: 6C A6 AE 89
B7 18 9A A8?? 35 7D 65 37 BF ED A3
F4? l…….5.e7….
0030: E7 DB 5D 5F
9B DA 4B FA?? 39 04 9B 4D DB C2 3E
FA? ..]_..K.9..M..>.
0040: 3B C2 63 F8
1E BE 03 F3?? BD 1C D4 8A 8E 3C 51 68? ;.c……….
加載證書
通過調用KeyStore.getCertificate(),加載證書也很簡單,如果提供的別名映射到證書鏈,則只返回指定的證書。
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
keyStore.load(new
FileInputStream(“output.p12”), “password”.toCharArray());
java.security.cert.Certificate cert =? keyStore.getCertificate(“private”);
System.out.println(cert);
} catch (Exception
ex){
ex.printStackTrace();
}
輸出為:
[
[
Version: V3
Subject: CN=ROOT
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key:
Sun RSA public key, 1024 bits
modulus:
107262652552256813768678166856978781385254195794582600239703451044252881438814396239031781495369251659734172714120481593881055888193254336293673302267462500060447786562885955334870856482264000504019061160524587434562257067298291769329550807938162702640388267016365640782567817416484577163775446236245223552189
public exponent: 65537
Validity: [From: Mon Jan 05 13:03:29 SGT
2015,
To: Tue Jan 05 13:03:29 SGT
2016]
Issuer: CN=ROOT
SerialNumber: [??? 5e5ca8a4]
]
Algorithm: [SHA1withRSA]
Signature:
0000: 22 21 BF 73
A6 6D 12 9B?? F7 49 6C 0E B3 50 6A
9D? “!.s.m…Il..Pj.
0010: FA 30 43 22
32 FF 54 95?? 80 2E B3 8B 6F 59 D4
B5? .0C”2.T…..oY..
0020: 6C A6 AE 89
B7 18 9A A8?? 35 7D 65 37 BF ED A3
F4? l…….5.e7….
0030: E7 DB 5D 5F
9B DA 4B FA?? 39 04 9B 4D DB C2 3E
FA? ..]_..K.9..M..>.
0040: 3B C2 63 F8
1E BE 03 F3?? BD 1C D4 8A 8E 3C 51
68? ;.c……….
導入和導出密鑰和證書
PKCS12密鑰庫可用于導入和導出密鑰和證書。 可以從PKCS12密鑰庫中提取私鑰,因此可以從PKCS12密鑰庫導出條目,然后將其導入到其他密鑰庫類型(如JKS)。
下面的代碼片段演示了如何從PKCS12導出私鑰條目并將其導入JSK密鑰庫:
try{
KeyStore keyStore =
KeyStore.getInstance(“PKCS12”);
keyStore.load(new
FileInputStream(“output.p12”), “password”.toCharArray());
Key pvtKey =
keyStore.getKey(“private”, “password”.toCharArray());
java.security.cert.Certificate[] chain
=
keyStore.getCertificateChain(“private”);
KeyStore jksStore =
KeyStore.getInstance(“JKS”);
jksStore.load(null, null);;
jksStore.setKeyEntry(“jksPrivate”,
pvtKey, “newpassword”.toCharArray(), chain);
jksStore.store(new
FileOutputStream(“output.jks”), “password”.toCharArray());
} catch (Exception
ex){
ex.printStackTrace();
}
如果希望擁有可移植的密鑰庫類型,并且將來可能希望與其他非Java庫一起使用,則PKCS12密鑰庫是推薦的密鑰庫類型。
Java中不同類型的密鑰庫(Keystore) – 概述
總結
以上是生活随笔為你收集整理的java jceks 密钥_Java中不同类型的密钥库(Keystore) – 概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从Steinar Gunderson的离
- 下一篇: eclipse克隆工作空间