㈠ android下的SSL證書信任問題怎麼解決
1、創建MySSLSocketFactory對象 :Throw Excetion
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream inStream = context.getAssets().open("信用證書");
Certificate ca;
try {
ca = cf.generateCertificate(inStream);
} finally {
inStream.close();
}
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);MySSLSocketFactory sslFactory = new MySSLSocketFactory(keyStore)
2、將MySSLSocketFactory傳入 http通信 , 這里以 HttpAsyncTask 作為http通信框架:
AsyncHttpClient client = newAsyncHttpClient();
client.setSSLSocketFactory(sslFactory);
client.get(urlString, params, new AsyncHttpResponseHandler() {
// TODO: 2017/1/5
}
㈡ android應用程序中包含的哪些文件不會被證書校驗完整性
生成CA私鑰文件ca.key:opensslgenrsa-outca.key1024生成X.509證書簽名請求文件ca.csr:opensslreq-new-keyca_private.key-outca.csr在生成ca.csr的過程中,會讓輸入一些組織信息等。生成X.509格式的CA根證書ca_public.crt(公鑰證書):opensslx509-req-inca.csr-signkeyca_private.key-outca_public.crt
㈢ 如何對android的apk簽名進行驗證
方法/步驟
1
菜單菜單鍵,鍵入cmd命令進入命令模式。如圖:
2
命令模式中,進入JDK的安裝目錄的Bin子目錄下。(我的JDK安裝在E盤,所以先進入E盤,然後再進入JDK安裝目錄)
3
通過keytool.exe 工具來創建keystore庫.
輸入以下命令:
keytool -genkeypair -alias - mydemo.keystore -keyalg RSA -validity 100
-keystore mydemo.keystore
命令說明如下:
-genkeypair :指定生成數字證實
-alias :指定生成數字證書的別名
-keyalg:指定生成數字證書的演算法 這里如RSA演算法
-validity:指定生成數字證書的有效期
-keystore :指定生成數字證書的存儲路徑。 (這里默認在keytool.exe 目錄下)
回車 出現如圖互動式界面 輸入數字證書費密碼 作者 公司等詳細信息
如圖 :
4
完成後,keystore庫創建完成,你可以在指定的保存目錄下找到 如圖:
5
使用jarsigner命令對未簽名的APK安裝包進行簽名。使用JDK安裝目錄下bin子目錄下的jarsigner.exe工具來進行簽名。
然後把未簽名的apk也拷貝到此目錄。如圖:
6
使用如下命令進行簽名:
jarsigner -verbose -keystore mydemo.keystore -signedjar
-Note.apk Notes.apk mydemo.keystore
以上命令的說明:
-verbose:指定生成詳細輸出
-keystore:指定數字證書存儲路徑
-signedjar:該選項的三個參數為 簽名後的apk包 未簽名的apk包 數字證書別名
注意有效期哦。
7
簽名後的apk 如圖:
8
sdk目錄下tool目錄下使用zipalign.exe工具優化APK安裝包。
將已經簽名的apk包放在zipalign.exe同目錄下 如圖:
9
使用如下命令:
zipalign -f -v 4 -Note.apk -Notes.apk
命令說明:
-f :指定強制覆蓋已有文件
-v 指定生成詳細輸出
4:指定檔案整理基於的位元組數 一般是4 也有基於32位的。
-Note.apk :優化前APK
-Notes.apk 優化後的APK
10
運行命令後,在該目錄下生成一個-Notes.apk,這個就是優化過的APK安裝包
,該安裝包可以對外發布。
如圖:
如果能對你有幫助,希望你能收藏和支持。
http://jingyan..com/article/3c48dd3491d91fe10be358f4.html
㈣ android https驗證怎樣攜帶證書
1、生成SSL證書請求文件CSR
2、到CA機構申請SSL證書,如沃通CA等
3、在android平台部署SSL證書
4、實現https加密訪問驗證
㈤ android是否有提供現成的驗證證書的api
讓他天然居民提供如附件內容同
㈥ 安卓應用怎麼跳過https證書驗證
無法跳過的,目前除了安卓,蘋果也是同樣,必須HTTPS加密要求。
除非了要實現HTTPS,必須達到ATS安全,SSL證書獲取:網頁鏈接
㈦ 如何使用android auth授權驗證
使用android auth授權驗證:
public String Get(String netUrl,String usr,String psw){
URL url = new URL(netUrl);
UsernamePasswordCredentials upc = new UsernamePasswordCredentials(usr,psw); //這一句使用用戶名密碼建立了一個數據
AuthScope as = new AuthScope(null,-1);
BasicCredentialsProvider bcp = new BasicCredentialsProvider(); //下面這一段我是抄的=。=
bcp.setCredentials(as, upc);
DefaultHttpClient dhc= new DefaultHttpClient();
dhc.setCredentialsProvider(bcp); //給client設置了一個驗證身份的部分
/*-------------------------分割線---------------------------------*/
HttpGet hg= new HttpGet(netUrl);
HttpResponse hr=null;
hr = dhc.execute(hg);
String line=null;
StringBuilder builder = new StringBuilder();
BufferedReader reader=null;
reader = new BufferedReader(new InputStreamReader(hr.getEntity().getContent() )); //獲取數據
while((line = reader.readLine()) != null) builder.append(line);
String strContent=builder.toString();
reader.close();
Log.d("info", strContent);
return strContent;
}
如果你想要做一個客戶端的話,登錄是必不可少的。安卓內置了OAUTH的登錄組件,可以在很方便的情況下將這個內容加入GET和POST的信頭中,完成驗證的功能。
下面直接進入正題:我要給論壇做一個客戶端,論壇使用的是OAUTH的驗證系統。這就要使用到一個 UsernamePasswordCredentials 和 AuthScope 和 BasicCredentialsProvider類,具體大家可以查閱,我偷懶直接在下面放代碼啦!
那麼分割線上面的部分就是加入OAUTH驗證的主體部分,道理我可能還講不清楚,但是這個代碼拿起來就可以直接用,大家可以試試。
㈧ android 手機使用webview 白屏 ssl 不驗證證書會有什麼後果
webview.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (error.getPrimaryError() == SslError.SSL_DATE_INVALID // 日期不正確
|| error.getPrimaryError() == SslError.SSL_EXPIRED // 日期不正確
|| error.getPrimaryError() == SslError.SSL_INVALID // webview BUG
|| error.getPrimaryError() == SslError.SSL_UNTRUSTED) { // 根證書丟失
if (chkMySSLCNCert(error.getCertificate())) {
handler.proceed(); // 如果證書一致,忽略錯誤
}
}
}
private boolean chkMySSLCNCert(SslCertificate cert) {
byte[] MySSLCNSHA256 = { 35, 76, 110, -121, -68, -104, -12, 84, 39, 119, -55,
101, 95, -8, -90, 9, 36, -108, 5, -57, 76, -98, -19, -73, 91, -37, 18,
64, 32, -41, 0, 109 }; //證書指紋
Bundle bundle = SslCertificate.saveState(cert);
byte[] bytes = bundle.getByteArray("x509-certificate");
if (bytes != null) {
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate ca = cf.generateCertificate(new ByteArrayInputSteam(bytes));
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] Key = sha256.digest(((X509Certificate) ca).getEncoded());
return Arrays.equals(key, MySSLCNSHA256);
} catch (Exception Ex) {}
}
return false;
}
}