
保持交易與客戶資料隱密性
憑證工具使用篇(Java Keytool)
JAVA KeyTool是一個免費的憑證管理工具,使用於JAVA平台上,此工具可產生,匯出與匯入憑證,並且進行憑證相關的功能,了解此工具,可以讓您在操作憑證上,非常的便利,以下簡單說明一些操作的語法:
Keytool是一個Java資料證書的管理工具,Keytool將金鑰(key)和證書(certificates)存在一個稱為keystore的檔中 在keystore裡,包含兩種資料:
金鑰實體(Key entity):金鑰(secret key)又或者是私密金鑰(Private Key)和配對公開金鑰(採用非對稱加密)
可信任的證書實體(trusted certificate entries):只包含公開金鑰(Public Key)
ailas(別名)每個keystore都關聯這一個獨一無二的alias,這個alias通常不區分大小寫,且Keystore中可以有很多組的(金鑰+證書),每一組都有其保護的密碼
JDK中keytool常用指令:如下
:在用戶主目錄中創建一個預設檔".keystore",還會產生一個mykey的別名,mykey中包含用戶的公開金鑰、私密金鑰和證書(在沒有指定生成位置的情況下,keystore會存在使用者系統預設目錄,如:對於windows系統,會生成在系統的C:\Documents and Settings\UserName\檔案名為“.keystore”)
下面是各選項的預設值:
以下是在command mode下,keytool的參數說明
-certreq 產生憑證要求
-changealias 變更項目的別名
-delete 刪除項目
-exportcert 匯出憑證
-genkeypair 產生金鑰組
-genseckey 產生秘密金鑰
-gencert 從憑證要求產生憑證
-importcert 匯入憑證或憑證鏈
-importkeystore 從其他金鑰儲存庫匯入一個或全部項目
-keypasswd 變更項目的金鑰密碼
-list 列示金鑰儲存庫中的項目
-printcert 列印憑證的內容
-printcertreq 列印憑證要求的內容
-printcrl 列印 CRL 檔案的內容
-storepasswd 變更金鑰儲存庫的儲存密碼
簡單的語法範例
1. keystore的產生:
分階段產生:
keytool -genkey -alias edi-prod(別名) -keypass password(別名密碼) -keyalg RSA(演算法) -keysize 1024(金鑰長度) -validity 365(有效期,天單位) -keystore ./edi.keystore(指定生成證書的位置和證書名稱) -storepass 123456(獲取keystore資訊的密碼)
一次性產生:
keytool -genkey -alias edi-prod -keypass password -keyalg RSA -keysize 1024 -validity 365 -keystore ./edi.keystore -storepass 123456 -dname "CN=(名字與姓氏), OU=(組織單位名稱), O=(組織名稱), L=(城市或區域名稱), ST=(州或省份名稱), C=(單位的兩字母國家代碼)";(中英文都可)
2.查看keystore裡的資訊:
keytool -list -v -keystore ./edi.keystore -storepass 123456
Keystore 類型: JKS
Keystore 提供者: SUN
您的 keystore 包含 1 輸入
別名名稱: edi-prod
建立日期: 2013/2/6
項目類型:PrivateKeyEntry
認證鏈長度: 1
認證 [1]:
所有者:CN=mis, OU=mis, O=wei, L=Taipei, ST=Taipei, C=TW
核發者:CN=mis, OU=mis, O=wei, L=Taipei, ST=Taipei, C=TW
序號:51121b83
自以下日期開始生效:Wed Feb 06 16:59:47 CST 2013,直到:Thu Feb 06 16:59:47 CST 2014
憑證指紋:
MD5:C7:EE:5A:17:C6:FF:0D:30:7C:6B:52:53:D7:29:B1:A6
SHA1:35:D9:F0:07:5B:2D:9E:89:45:9A:4D:B8:8B:B9:7F:12:D1:36:3B:EC
簽名演算法名稱:SHA1withRSA
版本:3
3.產生要向第三方發證單位(如:CA)申請的檔案
keytool -certreq -alias edi-prod -file edi-certreq.txt -keystore ./edi.keystore -storepass 123456 -keypass password
edi-certreq.txt的檔案內容:
----BEGIN NEW CERTIFICATE REQUEST-----
MIIBmTCCAQICAQAwWTELMAkGA1UEBhMCVFcxDzANBgNVBAgTBlRhaXBlaTEPMA0GA1UEBxMGVGFp
cGVpMQwwCgYDVQQKEwN3ZWkxDDAKBgNVBAsTA21pczEMMAoGA1UEAxMDbWlzMIGfMA0GCSqGSIb3
DQEBAQUAA4GNADCBiQKBgQClzG0muVpAF+cMOG/PWobKY+vg8l6w6xOF0HgFA3S+3LFV+V79ezLF
Vz3e7L8HeOXM2vTtbm9OdMsbHog8zFUbawyeQ7jZOj74vsxT3RYfPMEFQmQyZYVN+Sd5X9GWX3SB
52l7I0e+1ZKRxC674e9YMGZATzfQIsciJ6vJ76IL3wIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEA
hz0J99+3Z0sp56lwxzbaVWnnmj1attPX5wQcaCg+NFdUuMcv2nHY/zWZD9p+EdNBBhgBaFqc8hnU
+qO002MBlzWONUPF4qGlTFP+tnZ+zgZAmkTyLEqiqkYmoD6FEYNmNpvW7aMVeNpL+PVpeJY8Dy4l
2z4hifw1fLqSuClIU0A=
-----END NEW CERTIFICATE REQUEST-----
4.登入 Microsoft Active Directory Certificate Services 網站 http://localhost/certsrv 作申請
->Request a certificate
->advanced certificate request.
->Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file.
選擇 Download certificate chain 將產生的憑證存成 edi-certnew.p7b
5.將edi-certnew.p7b 加入到edi.keystore中:
keytool -import -alias edi-prod(指定導入證書的別名,如果不指定,預設值為mykey,別名是唯一,沒指定對導入會出錯) -file edi-certnew.p7b -keystore ./edi.keystore -storepass 123456 -keypass password
並可查看keystore裡,應有新增一個憑證的資訊:
keytool -list -v -keystore ./edi.keystore -storepass 123456
文章轉載:http://polinwei.blogspot.tw/