網頁

2017年9月4日 星期一

Java keytool and Android

D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -validity 3650 -genkey -v -alias server -keyalg RSA -keystore server.keystore -dname "CN=AndroidServer,OU=R&D,O=SDL,L=Taichung,ST=Taiwan,c=TW" -storepass store1234 -keypass key1234
針對 CN=AndroidServer, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW 產生有效期 3,650 天的 2,048 位元 RSA 金鑰組以及自我簽署憑證 (SHA256withRSA)

[儲存 server.keystore]

D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/08/31  13:27    <DIR>          .
2017/08/31  13:27    <DIR>          ..
2017/08/31  13:27             2,228 server.keystore
               1 個檔案           2,228 位元組
               2 個目錄  679,286,407,168 位元組可用

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -validity 3650 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname "CN=AndroidClient,OU=R&D,O=SDL,L=Taichung,ST=Taiwan,c=TW" -storepass client1234
針對 CN=AndroidClient, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW 產生有效期 3,650 天的 2,048 位元 RSA 金鑰組以及自我簽署憑證 (SHA256withRSA)

[儲存 client.p12]

D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/08/31  13:32    <DIR>          .
2017/08/31  13:32    <DIR>          ..
2017/08/31  13:32             2,572 client.p12
2017/08/31  13:27             2,228 server.keystore
               2 個檔案           4,800 位元組
               2 個目錄  679,286,403,072 位元組可用

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -export -v -alias client -keystore client.p12 -storetype PKCS12 -storepass client1234 -rfc -file client.cer
憑證儲存在檔案 <client.cer>

D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/08/31  13:56    <DIR>          .
2017/08/31  13:56    <DIR>          ..
2017/08/31  13:57             1,260 client.cer
2017/08/31  13:55             2,572 client.p12
2017/08/31  13:54             2,230 server.keystore
               3 個檔案           6,062 位元組
               2 個目錄  679,286,390,784 位元組可用

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -export -v -alias server -keystore server.keystore -storepass store1234 -rfc -file server.cer
憑證儲存在檔案 <server.cer>

D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/08/31  13:58    <DIR>          .
2017/08/31  13:58    <DIR>          ..
2017/08/31  13:57             1,260 client.cer
2017/08/31  13:55             2,572 client.p12
2017/08/31  13:58             1,260 server.cer
2017/08/31  13:54             2,230 server.keystore
               4 個檔案           7,322 位元組
               2 個目錄  679,286,386,688 位元組可用

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -import -v -alias server -file server.cer -keystore client.truststore -storepass trust1234
擁有者: CN=AndroidServer, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW
發出者: CN=AndroidServer, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW
序號: 33fc9a74
有效期自: Thu Aug 31 13:54:47 CST 2017 到: Sun Aug 29 13:54:47 CST 2027
憑證指紋:
         MD5:  C7:7E:71:51:21:79:BF:BE:D9:42:E5:42:B7:0F:4D:19
         SHA1: DD:3E:87:9E:92:67:6D:F4:18:70:E8:23:82:93:A6:A9:9D:0A:7A:F4
         SHA256: 05:EE:F8:9F:DB:89:C2:D0:20:40:C5:77:DF:50:2D:3D:06:E4:FC:EE:15:4A:39:14:0E:F2:AF:29:23:65:A6:49
         簽章演算法名稱: SHA256withRSA
         版本: 3

擴充套件:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CB 69 A6 E6 E4 06 5F 7C   EF 14 38 37 88 F8 30 A7  .i...._...87..0.
0010: 1A 7F 7F 3A                                        ...:
]
]

信任這個憑證? [否]:  y
憑證已新增至金鑰儲存庫中
[儲存 client.truststore]

D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/08/31  14:02    <DIR>          .
2017/08/31  14:02    <DIR>          ..
2017/08/31  13:57             1,260 client.cer
2017/08/31  13:55             2,572 client.p12
2017/08/31  14:02               940 client.truststore
2017/08/31  13:58             1,260 server.cer
2017/08/31  13:54             2,230 server.keystore
               5 個檔案           8,262 位元組
               2 個目錄  679,286,382,592 位元組可用

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -import -v -alias client -file client.cer -keystore server.keystore -storepass store1234
擁有者: CN=AndroidClient, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW
發出者: CN=AndroidClient, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW
序號: 4a2adb9c
有效期自: Thu Aug 31 13:55:07 CST 2017 到: Sun Aug 29 13:55:07 CST 2027
憑證指紋:
         MD5:  A6:8C:FA:94:8C:F9:D5:09:54:DD:12:FE:75:51:19:86
         SHA1: 10:7D:E3:DC:D8:42:43:FF:46:97:26:A2:8F:AA:B7:90:74:16:8D:24
         SHA256: 3B:30:95:09:AE:1A:AC:AC:2D:3C:10:4B:7B:33:4B:E6:5B:51:AC:C7:C8:A0:99:EF:39:0F:64:DE:F5:56:6E:D8
         簽章演算法名稱: SHA256withRSA
         版本: 3

擴充套件:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 32 BA E6 02 8E A5 3D 02   77 01 21 29 B0 55 21 82  2.....=.w.!).U!.
0010: F6 8B 34 9B                                        ..4.
]
]

信任這個憑證? [否]:  y
憑證已新增至金鑰儲存庫中
[儲存 server.keystore]

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/08/31  14:02    <DIR>          .
2017/08/31  14:02    <DIR>          ..
2017/08/31  13:57             1,260 client.cer
2017/08/31  13:55             2,572 client.p12
2017/08/31  14:02               940 client.truststore
2017/08/31  13:58             1,260 server.cer
2017/08/31  14:04             3,138 server.keystore
               5 個檔案           9,170 位元組
               2 個目錄  679,286,382,592 位元組可用

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -list -keystore server.keystore -storepass store1234

金鑰儲存庫類型: JKS
金鑰儲存庫提供者: SUN

您的金鑰儲存庫包含 2 項目

client, 2017/8/31, trustedCertEntry,
憑證指紋 (SHA1): 10:7D:E3:DC:D8:42:43:FF:46:97:26:A2:8F:AA:B7:90:74:16:8D:24
server, 2017/8/31, PrivateKeyEntry,
憑證指紋 (SHA1): DD:3E:87:9E:92:67:6D:F4:18:70:E8:23:82:93:A6:A9:9D:0A:7A:F4

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -list -keystore client.truststore -storepass trust1234

金鑰儲存庫類型: JKS
金鑰儲存庫提供者: SUN

您的金鑰儲存庫包含 1 項目

server, 2017/8/31, trustedCertEntry,
憑證指紋 (SHA1): DD:3E:87:9E:92:67:6D:F4:18:70:E8:23:82:93:A6:A9:9D:0A:7A:F4

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -import -v -alias server -file server.cer -keystore trust.bks -storepass trust1234 -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
擁有者: CN=AndroidServer, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW
發出者: CN=AndroidServer, OU=R&D, O=SDL, L=Taichung, ST=Taiwan, C=TW
序號: 33fc9a74
有效期自: Thu Aug 31 13:54:47 CST 2017 到: Sun Aug 29 13:54:47 CST 2027
憑證指紋:
         MD5:  C7:7E:71:51:21:79:BF:BE:D9:42:E5:42:B7:0F:4D:19
         SHA1: DD:3E:87:9E:92:67:6D:F4:18:70:E8:23:82:93:A6:A9:9D:0A:7A:F4
         SHA256: 05:EE:F8:9F:DB:89:C2:D0:20:40:C5:77:DF:50:2D:3D:06:E4:FC:EE:15:4A:39:14:0E:F2:AF:29:23:65:A6:49
         簽章演算法名稱: SHA256withRSA
         版本: 3

擴充套件:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CB 69 A6 E6 E4 06 5F 7C   EF 14 38 37 88 F8 30 A7  .i...._...87..0.
0010: 1A 7F 7F 3A                                        ...:
]
]

信任這個憑證? [否]:  y
憑證已新增至金鑰儲存庫中
[儲存 trust.bks]

D:\SVN_Repository3\pi\Key>
D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/09/01  09:44    <DIR>          .
2017/09/01  09:44    <DIR>          ..
2017/08/31  13:57             1,260 client.cer
2017/08/31  13:55             2,572 client.p12
2017/08/31  14:02               940 client.truststore
2017/08/31  13:58             1,260 server.cer
2017/08/31  14:04             3,138 server.keystore
2017/09/01  09:44               962 trust.bks
               6 個檔案          10,132 位元組
               2 個目錄  679,233,712,128 位元組可用

D:\SVN_Repository3\pi\Key>

//下載 Bouncy Castle
// https://www.bouncycastle.org/latest_releases.html
// 拷貝 bcprov-ext-jdk15on-158.jar 到 C:\Program Files\Java\jdk1.7.0_67\jre\lib\ext
// 拷貝 bcprov-ext-jdk15on-158.jar 到 C:\Program Files\Java\jre7\lib\ext
// 將下一行加入 C:\Program Files\Java\jre7\lib\security\java.security 和 C:\Program Files\Java\jdk1.7.0_67\jre\lib\security\java.security
// security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
// 新增 CLASSPATH=C:\Program Files\Java\jdk1.7.0_67\jre\lib\ext\bcprov-ext-jdk15on-158.jar
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -srcstorepass client1234 -destkeystore client.bks -deststoretype BKS -deststorepass client1234 -provider org.bouncycastle.jce.provider.BouncyCastleProvider
匯入別名 client 的項目時出現問題: java.security.KeyStoreException: java.io.IOException: Error initialising store of key store: java.security.InvalidKeyException: Illegal key size。
未匯入別名 client 的項目。
Do you want to quit the import process? [no]:  y
已完成匯入命令: 成功匯入 0 個項目,1 個項目失敗或已取消

D:\SVN_Repository3\pi\Key>
//下載 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download
//http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
//解壓縮 UnlimitedJCEPolicyJDK7.zip
//到 C:\Program Files\Java\jdk1.7.0_67\jre\lib\security
//備份舊的 local_policy.jar, US_export_policy.jar
//拷貝新的 local_policy.jar, US_export_policy.jar
D:\SVN_Repository3\pi\Key>"C:\Program Files\Java\jdk1.7.0_67\bin\keytool.exe" -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -srcstorepass client1234 -destkeystore client.bks -deststoretype BKS -deststorepass client1234 -provider org.bouncycastle.jce.provider.BouncyCastleProvider
已成功匯入別名 client 的項目。
已完成匯入命令: 成功匯入 1 個項目,0 個項目失敗或已取消

D:\SVN_Repository3\pi\Key>dir
 磁碟區 D 中的磁碟是 新增磁碟區
 磁碟區序號:  3AAA-91FF

 D:\SVN_Repository3\pi\Key 的目錄

2017/09/01  10:26    <DIR>          .
2017/09/01  10:26    <DIR>          ..
2017/09/01  10:26             2,234 client.bks
2017/08/31  13:57             1,260 client.cer
2017/08/31  13:55             2,572 client.p12
2017/08/31  14:02               940 client.truststore
2017/08/31  13:58             1,260 server.cer
2017/08/31  14:04             3,138 server.keystore
2017/09/01  09:44               962 trust.bks
               7 個檔案          12,366 位元組
               2 個目錄  679,233,679,360 位元組可用

D:\SVN_Repository3\pi\Key>

沒有留言:

張貼留言