android ssl雙向驗證
預備工具「bcprov-jdk16-141.jar」和「portecle.jar」
將「bcprov-jdk16-141.jar」部署到jdk1.6.0_03\jre\lib\ext目錄下
1:伺服器端的金鑰庫
d:\a>keytool -genkey -alias 19emts -validity 365 -keyalg rsa -keysize 1024 -keypass 123456 -storepass 123456 -keystore 19emts.keystore
您的名字與姓氏是什麼?
[unknown]: 192.168.63.34 (注意這裡是主機名)
您的組織單位名稱是什麼?
[unknown]: 19e
您的組織名稱是什麼?
[unknown]: 19e
您所在的城市或區域名稱是什麼?
[unknown]: beijing
您所在的州或省份名稱是什麼?
[unknown]: beijing
該單位的兩字母國家**是什麼
[unknown]: cn
cn=192.168.63.34:9080, ou=19e, o=19e, l=beijing, st=beijing, c=cn 正確嗎?
[否]: y
2:客戶端的金鑰庫
d:\a>keytool -genkey -alias 19emtc -validity 365 -keyalg rsa -keysize 1024 -keypass 123456 -storepass 123456 -keystore 19emtc.p12 -storetype pkcs12
您的名字與姓氏是什麼?
[unknown]: 19e
您的組織單位名稱是什麼?
[unknown]: 19e
您的組織名稱是什麼?
[unknown]: 19e
您所在的城市或區域名稱是什麼?
[unknown]: beijing
您所在的州或省份名稱是什麼?
[unknown]: beijing
該單位的兩字母國家**是什麼
[unknown]: cn
cn=19e, ou=19e, o=19e, l=beijing, st=beijing, c=cn 正確嗎?
[否]: y
3:匯出伺服器端證書
d:\a>keytool -export -file service.cer -keystore 19emts.keystore -alias 19emts
4:匯出客戶端證書
d:\a>keytool -export -file client.cer -keystore 19emtc.p12 -alias 19emtc -storetype pkcs12
5:將客戶端證書匯入伺服器信任證書庫
d:\a>keytool -import -file client.cer -keystore 19emts.keystore -alias 19emtc
輸入keystore密碼:
所有者:cn=z, ou=j, o=z, l=bj, st=bj, c=cn
簽發人:cn=z, ou=j, o=z, l=bj, st=bj, c=cn
序列號:52de290d
有效期: tue jan 21 16:00:13 cst 2014 至wed jan 21 16:00:13 cst 2015
證書指紋:
md5:6e:23:29:d5:7a:13:e9:d6:7d:2c:30:62:7a:cc:9b:3f
sha1:f9:c0:0d:d6:7c:13:98:2c:df:a3:80:de:4f:02:aa:d3:9e:31:ec:a6
簽名演算法名稱:sha1withrsa
版本: 3
信任這個認證? [否]: y
認證已新增至keystore中
7:ie驗證證書是否正確
雙擊「19emtc.p12」和「service.cer」載入證書
8:伺服器端配置
10:由於android平台證書庫只支援bks格式所以需要借助portecle.jar將19emtc.p12轉換成bks格式
10.1 開啟portecle.jar,新建bks格式的證書庫,並從「19emtc.p12」檔案匯入金鑰對
12.2 儲存檔案為「client.bks」
11: 匯入伺服器端證書「service.cer」到「client.bks」中
d:\a>keytool -import -file service.cer -keystore client.bks -storetype bks -provider org.bouncycastle.jce.provider.bouncycastleprovider
輸入keystore密碼:
所有者:cn=192.168.63.34, ou=19e, o=19e, l=bj, st=bj, c=cn
簽發人:cn=192.168.63.34, ou=19e, o=19e, l=bj, st=bj, c=cn
序列號:52de28e3
有效期: tue jan 21 15:59:31 cst 2014 至wed jan 21 15:59:31 cst 2015
證書指紋:
md5:5f:65:53:14:47:4a:72:d5:9d:ce:eb:91:e9:9d:c8:85
sha1:20:67:31:da:06:55:35:d8:0a:2a:8e:f5:3e:2d:7a:47:8a:02:ff:5a
簽名演算法名稱:sha1withrsa
版本: 3
信任這個認證? [否]: y
認證已新增至keystore中
12:將「client.bks」檔案放入android專案的「assets」資料夾下
13:客戶端**
}14:大功告成.
備註:可不生成pkcs12格式的證書庫檔案,直接生成bks格式的證書檔案但是不能進行ie驗證
命令為:
d:\a>keytool -genkey -alias 19emtc -validity 365 -keyalg rsa -keysize 1024 -keypass 123456 -storepass 123456 -keystore 19emtc.bks -storetype bks -provider org.bouncycastle.jce.provider.bouncycastleprovider
您的名字與姓氏是什麼?
[unknown]: 19e
您的組織單位名稱是什麼?
[unknown]: 19e
您的組織名稱是什麼?
[unknown]: 19e
您所在的城市或區域名稱是什麼?
[unknown]: bj
您所在的州或省份名稱是什麼?
[unknown]: bj
該單位的兩字母國家**是什麼
[unknown]: cn
cn=19e, ou=19e, o=19e, l=bj, st=bj, c=cn 正確嗎?
[否]: y
d:\a>
然後將伺服器端信任檔案匯入即可
Android Https原理詳解
非對稱加密,客戶端將公鑰加密後的資料傳送給伺服器,伺服器用對應的私鑰解密。安全性高,但是加解密的效率低。https同時採用了非對稱加密和對稱加密的方法來保證通訊通道的安全。注意這裡有乙個思維誤區,https保證的是通訊通道的安全,至於兩端,這種通訊模型本身就是假設兩端是安全的。服務端通常不用擔心,能...
深入理解 Android Https
用私鑰加密資訊,用公鈅來解密。因為公鑰是共有的,這種流程用於認證。c用s的公鑰把資訊加密後傳遞給s.s用自己的私鑰解密獲取資訊。常用的非對稱加密演算法有rsa elgamal rabin d h ecc 橢圓曲線加密演算法 等。配置 設定簽名證書 建立tls型別的sslcontext物件,that ...
crossvalind Matlab 交叉驗證
matlab 交叉驗證 rel noopener noreferrer crossvalind matlab 交叉驗證 lujingyang1029 今天用到crossvalind.這個適用於crossvalidation。中文應該叫做交叉驗證。我主要想說說這個函式怎麼用的。舉個簡單的例子 p tr...