SSL通關之keytool 命令(二)__小技術

來源:互聯網
上載者:User

在上一篇部落格中,說到SSL的第一步就是要建立認證。(或者向第三方購買)

PS:最終上線的產品,認證會是向第三方認證機構購買的,但在開發過程中,是自己建立的。

建立認證的常用工具是keytool,這個是jdk內建的工具,只要電腦上裝了jdk(並且環境變數裡配置好了)就可以使用。

linux系統不能用keytool,要用openssl。

本篇所列的命令為keytool命令。


首先,列出參考文章:

1、建立認證過程參考:

http://wenku.baidu.com/link?url=uWTSct_uZYrcbG0RPpWTZ4Lmhz177Uv4xlMyBw6554YkzCG00GmKDscP36LSFDb3vdhpq2EW4VHUUzkyLjQdmepZbBpp29QxsAYzmRfJe9O

http://www.blogjava.net/icewee/archive/2012/06/04/379947.html

http://czj4451.iteye.com/blog/1487684

2、keytool命令解釋參考:

http://blog.csdn.net/ygc87/article/details/7620942

http://www.cnblogs.com/benio/archive/2010/09/15/1826990.html(非常詳細)


下面,簡單介紹幾個常用命令的說明:

keytool常用命令 
-alias       產生別名 
-keystore    指定密鑰庫的名稱(就像資料庫一樣的認證庫,可以有很多個認證,cacerts這個檔案是jre內建的, 
             你也可以使用其它檔案名稱字,如果沒有這個檔案名稱字,它會建立這樣一個) 
-storepass   指定密鑰庫的密碼 
-keypass     指定別名條目的密碼 
-list        顯示密鑰庫中的認證資訊 
-v           顯示密鑰庫中的認證詳細資料 
-export      將別名指定的認證匯出到檔案 
-file        參數指定匯出到檔案的檔案名稱 
-delete      刪除密鑰庫中某條目 
-import      將已簽名數位憑證匯入密鑰庫 
-keypasswd   修改密鑰庫中指定條目口令 
-dname       指定認證擁有者資訊 
-keyalg      指定密鑰的演算法 
-validity    指定建立的認證有效期間多少天 
-keysize     指定密鑰長度 

接下來,進入本文的重點——keytool命令建立ssl認證:

PS:僅僅用下面的命令建立bks是不能成功的,因為缺少一個bks支援的jar,具體的解決辦法可以百度一下,網上很多。很簡單,就是下載一個jar放到jdk的兩個目錄下,然後修改對於的兩個設定檔就好了。

一、單向驗證成功: 1、生產伺服器端認證:
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore D:\ssl\bks\server.jks -dname "CN=10.100.100.24,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456
2、匯出認證
keytool -exportcert -v -alias server -keystore D:\ssl\bks\server.jks -storepass 123456 -rfc -file D:\ssl\bks\server.cert
3、生產Android可用的用戶端認證

keytool -importcert -keystore D:\ssl\bks\client.bks -file D:\ssl\bks\server.cert -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider  -storepass 123456


PS:ios單項驗證不需要認證
二、同一個server,兩份不同的client認證(一份bks,Android用的,一份是jks,ios用的),雙向認證成功:

1、建立server端認證:

keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore D:\ssl\server.keystore -dname "CN=10.100.100.24,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


2、建立Android用戶端認證:(雙向(Android)驗證成功)

最終要給用戶端用的認證是:client-bks-trust.bks、client-bks.bks 
keytool -validity 365 -genkeypair -v -alias client-bks -keyalg RSA -storetype BKS -keystore D:\ssl\client-bks.bks -dname "CN=client,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -export -v -alias client-bks -keystore D:\ssl\client-bks.bks -storetype BKS -storepass 123456 -rfc -file D:\ssl\client-bks.crt


keytool -export -v -alias server -keystore D:\ssl\server.keystore -storepass 123456 -rfc -file D:\ssl\server.crt


keytool -importcert -keystore D:\ssl\client-bks-trust.bks -file D:\ssl\server.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider  -storepass 123456


keytool -import -v -alias client-bks -file D:\ssl\client-bks.crt -keystore D:\ssl\server.keystore -storepass 123456


3、建立ios用戶端認證(ios:雙向驗證成功)

最終發給ios用戶端的認證是:client-ios.truststore(該格式也可以為.p12,但此處的檔案與下面第一行產生的client-ios.p12檔案是不同的檔案)


keytool -validity 365 -genkeypair -v -alias client-ios -keyalg RSA -storetype PKCS12 -keystore D:\ssl\client-ios.p12 -dname "CN=client-ios,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -export -v -alias client-ios -keystore D:\ssl\client-ios.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\ssl\client-ios.cer -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass 123456


keytool -export -v -alias server -keystore D:\ssl\server.keystore -storepass 123456 -rfc -file D:\ssl\server-ios.cer


keytool -import -v -alias server -file D:\ssl\server-ios.cer -keystore D:\ssl\client-ios.truststore -storepass 123456


keytool -import -v -alias client-ios -file D:\ssl\client-ios.cer -keystore D:\ssl\server.keystore -storepass 123456


三、(也可以用java代碼測試)

ios-jks:雙向成功


keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore D:\ssl\ios-jks\server.keystore -dname "CN=10.100.100.24,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:\ssl\ios-jks\client.p12 -dname "CN=client,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -export -v -alias client -keystore D:\ssl\ios-jks\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\ssl\ios-jks\client.cer -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass 123456


keytool -export -v -alias server -keystore D:\ssl\ios-jks\server.keystore -storepass 123456 -rfc -file D:\ssl\ios-jks\server.cer


keytool -import -v -alias server -file D:\ssl\ios-jks\server.cer -keystore D:\ssl\ios-jks\client.truststore -storepass 123456


keytool -import -v -alias client -file D:\ssl\ios-jks\client.cer -keystore D:\ssl\ios-jks\server.keystore -storepass 123456

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.