日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java okhttp https_OkHttp是否支持接受自签名SSL证书?

發布時間:2024/9/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java okhttp https_OkHttp是否支持接受自签名SSL证书? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從我們的應用程序獲取OkHttpClient 3.0實例的兩種方法,這些實例可以從密鑰庫中識別您的自簽名證書(使用Android項目“原始”資源文件夾中準備好的pkcs12證書文件):

private static OkHttpClient getSSLClient(Context context) throws

NoSuchAlgorithmException,

KeyStoreException,

KeyManagementException,

CertificateException,

IOException {

OkHttpClient client;

SSLContext sslContext;

SSLSocketFactory sslSocketFactory;

TrustManager[] trustManagers;

TrustManagerFactory trustManagerFactory;

X509TrustManager trustManager;

trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

trustManagerFactory.init(readKeyStore(context));

trustManagers = trustManagerFactory.getTrustManagers();

if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {

throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));

}

trustManager = (X509TrustManager) trustManagers[0];

sslContext = SSLContext.getInstance("TLS");

sslContext.init(null, new TrustManager[]{trustManager}, null);

sslSocketFactory = sslContext.getSocketFactory();

client = new OkHttpClient.Builder()

.sslSocketFactory(sslSocketFactory, trustManager)

.build();

return client;

}

/**

* Get keys store. Key file should be encrypted with pkcs12 standard. It? ? can be done with standalone encrypting java applications like "keytool". File password is also required.

*

* @param context Activity or some other context.

* @return Keys store.

* @throws KeyStoreException

* @throws CertificateException

* @throws NoSuchAlgorithmException

* @throws IOException

*/

private static KeyStore readKeyStore(Context context) throws

KeyStoreException,

CertificateException,

NoSuchAlgorithmException,

IOException {

KeyStore keyStore;

char[] PASSWORD = "12345678".toCharArray();

ArrayList certificates;

int certificateIndex;

InputStream certificate;

certificates = new ArrayList<>();

certificates.add(context.getResources().openRawResource(R.raw.ssl_pkcs12));

keyStore = KeyStore.getInstance("pkcs12");

for (Certificate certificate : certificates) {

try {

keyStore.load(certificate, PASSWORD);

} finally {

if (certificate != null) {

certificate.close();

}

}

}

return keyStore;

}

總結

以上是生活随笔為你收集整理的java okhttp https_OkHttp是否支持接受自签名SSL证书?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。