Aandroid中https請求的雙向認證

2021-08-05 22:19:38 字數 2189 閱讀 4307

aandroid中https請求的雙向認證

雙向認證

雙向證書驗證:

首先對於雙向證書驗證,也就是說,客戶端有自己的密匙,並持有服務端的證書,服務端給客戶端傳送資料時,

需要將服務端的證書發給客戶端驗證,驗證通過才執行傳送資料,同樣,客戶端請求伺服器資料時,

也需要將自己的證書發給服務端驗證,通過才允許執行請求。

1.生成客戶端keystore,因為客戶端andoird不能用keystore格式的金鑰庫,所以先生成jks格式,再用portecle工具轉成bks格式

keytool -genkeypair -alias client -keyalg rsa -validity 3650 -keypass 123456 -storepass 123456 -keystore client.jks

2.生成服務端keystore

keytool -genkeypair -alias server -keyalg rsa -validity 3650 -keypass 123456 -storepass 123456 -keystore server.keystore  

3.匯出客戶端證書

keytool -export -alias client -file client.cer -keystore client.jks -storepass 123456

4.匯出服務端證書

keytool -export -alias server -file server.cer -keystore server.keystore -storepass 123456

5.重點:證書交換

將客戶端證書匯入服務端keystore中,再將服務端證書匯入客戶端keystore中, 乙個keystore可以匯入多個證書,生成證書列表

生成客戶端信任證書庫(由服務端證書生成的證書庫)

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

將客戶端證書匯入到伺服器證書庫(使得伺服器信任客戶端證書)

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

6.檢視證書庫中的全部證書

keytool -list -keystore e:\ssl\server.keystore -storepass 123456

7.配置伺服器

修改server.xml檔案

備註: - keystorefile:指定伺服器金鑰庫,可以配置成絕對路徑,如「d:/key/server.keystore」,

本例中是在tomcat目錄中建立了乙個名- 稱為key的資料夾,僅供參考。

- keystorepass:金鑰庫生成時的密碼

- truststorefile:受信任金鑰庫,和金鑰庫相同即可

- truststorepass:受信任金鑰庫密碼

8.用portecle工具,執行protecle.jar將client.jks和truststore.jks分別轉換成client.bks和truststore.bks,然後放到android客戶端的assert目錄下

執行protecle.jar--》開啟檔案選中client.jks,選擇tools-->change keystore type-->選擇bks,最後關閉儲存為client.bks

9.讀取client.bks,進行網路請求

通過上面的步驟生成的證書,客戶端需要用到的是client.bks(客戶端金鑰,用於請求的時候給伺服器來驗證身份之用)和truststore.bks(客戶端證書庫,

用於驗證伺服器端身份,防止釣魚)這兩個檔案.其中安卓端的證書型別必須要求是bks型別

10.下面給出sslcontext方式進行ssl認證的客戶端**

try  

});  

inputstream inputstream = conn.getinputstream();  

string content = getstring(inputstream);  

ioutils.close(inputstream);  

showlog(content);  

} catch (exception e)  

Aandroid中https請求的單向認證

aandroid中https請求的單向認證 一 https 單向認證 1.給伺服器生成金鑰 keytool genkeypair alias skxy keyalg rsa validity 3650 keypass 123456 storepass 123456 keystore skxy.key...

請描述https的請求過程。

客戶端向伺服器發起https請求,連線到伺服器的443埠 伺服器端有乙個金鑰對,即公鑰 即數字證書 和私鑰,是用來進行非對稱加密使用的,伺服器端儲存著私鑰,不能將其洩露,公鑰可以傳送給任何人 伺服器將自己的公鑰傳送給客戶端 客戶端收到伺服器端的公鑰之後,檢查其合法性,如果發現發現公鑰有問題,那麼ht...

請描述https的請求過程

1 客戶端向伺服器發起https請求,連線到伺服器的443埠 2 伺服器端有乙個金鑰對,即公鑰 即數字證書 和私鑰,是用來進行非對稱加密使用的,伺服器端儲存著私鑰,不能將其洩露,公鑰可以傳送給任何人 3 伺服器將自己的公鑰傳送給客戶端 4 客戶端收到伺服器端的公鑰之後,檢查其合法性,如果發現發現公鑰...