2012-12-08 171 views
2

看看SSLCertificateSocketFactory文檔我看不到如何使用該工廠來獲取此類實例。如何獲取SSLCertificateSocketFactory實例?

我的意思是使用構造函數is deprecated。推薦getDefault()剛剛返回SocketFactorySSLSocketFactory ...

但沒有一個返回SSLCertificateSocketFactory方法。我猜可以在SSLSocketFactory中使用一些用例 - 但我對使用SSLCertificateSocketFactory特性感興趣,比如setTrustManagers(),例如,用於可選地使用服務器證書的指紋進行驗證。

因此我的問題。

回答

0

不知道你想做什麼,它不是一個好的解決方案。

一個信任所有人的解決方案是here,你可以找出你需要修改的東西。

我希望它有幫助!

0

參考建議的鏈接通過matheszabi

protected org.apache.http.conn.ssl.SSLSocketFactory createAdditionalCertsSSLSocketFactory() { 
try { 
    final KeyStore ks = KeyStore.getInstance("BKS"); 

    // the bks file we generated above 
    final InputStream in = context.getResources().openRawResource(R.raw.mystore); 
    try { 
     // don't forget to put the password used above in strings.xml/mystore_password 
     ks.load(in, context.getString(R.string.mystore_password).toCharArray()); 
    } finally { 
     in.close(); 
    } 

    return new AdditionalKeyStoresSSLSocketFactory(ks); 

} catch(Exception e) { 
    throw new RuntimeException(e); 
} 
} 
1

誠然,我不太確定SSLCertificateSocketFactory是這裏的目的,因爲,正如你提到的,工廠不正是人們期待什麼。當然,你可以通過你的方式,但爲什麼要這樣做。

轉到SSLContext.getInstance(「TLS」) - 或者,如果您僅針對API 9及以上版本,getDefault() - 並使用SSLContext.init()設置TrustManagers,就像其他人一樣。