假如我們設置公鑰庫密碼為:public_password1234,私鑰庫密碼為:private_password1234,則生成命令如下:
#生成命令
keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -keypass "private_password1234" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
#導出命令
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -file "certfile.cer"
#導入命令
keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "public_password1234"
上述命令執行完成之后,會在當前路徑下生成三個文件,分別是:privateKeys.keystore、publicCerts.keystore、certfile.cer。
其中文件certfile.cer不再需要可以刪除,
文件privateKeys.keystore用於當前的 ServerDemo 項目給客戶生成license文件,
而文件publicCerts.keystore則隨應用代碼部署到客戶服務器,用戶解密license文件並校驗其許可信息。

//關於第一條命令的猜想
1. 目的生成密鑰對,啥是密鑰對? 2. -dname 是密鑰對的所屬者信息, 3. -keystore應該是密鑰對的存儲介質,代表一個密鑰庫 4. -storepass應該是密鑰庫的進入密碼 5. -alias 應該是密鑰庫里面的一個密鑰的名稱 6. -keypass應該是密鑰庫里面那個由alias命名的密鑰的密碼 7. -keysize估計是密鑰庫里面的alias命名的密鑰的大小 8. -validaty估計是密鑰庫里面的alias命名的密鑰的有效天數

//關於第二條命令的猜想
1. -keystore從哪個密鑰庫導出證書 2. -storepass密鑰庫進入的密碼 3. -alias密鑰庫中的哪個密鑰條目要被導出 4. -file被導出的密鑰要寫到哪個文件里面

//關於第三條命令的猜想
1. -keystore要把證書導入到哪個密鑰庫 2. -storepass證書導入的那個密鑰庫的密碼 3. -file標識要被導入的證書 4. -alias把證書導入密鑰庫時創建的(證書或密鑰)條目
最后可以看出來:
密鑰庫,即*.keystore,里面存儲的條目,可以是密鑰,也可以是證書;
密鑰庫,中的條目可以導出證書;
密鑰庫,可以導入證書。
