当前位置:   article > 正文

OkHttp3 配置Https证书请求_okhttp3 ssl

okhttp3 ssl

前言:

又有一段时间没更新咯,也是自己实在是懒。也想到发布文章的话不知道该发布什么。就时间间隔了这么长的时间,这段时间稍微没那么忙了就抽空写篇文章记录一下。也不是什么高科技高级技术。好了废话不多说直接来个正文吧

正文:

直接上代码

  1. /**
  2. * 关联Https请求验证证书
  3. *
  4. * @param okHttpClient
  5. */
  6. public OkHttpClient SSLContext(OkHttpClient.Builder okHttpClient){
  7. ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
  8. .allEnabledTlsVersions()
  9. .allEnabledCipherSuites()
  10. .build();
  11. try {
  12. //设置证书类型
  13. CertificateFactory factory = CertificateFactory.getInstance("X.509", "BC");
  14. //打开放在main文件下的 assets 下的Http证书
  15. InputStream stream = getAssets().open("demo.crt");
  16. Certificate certificate = factory.generateCertificate(stream);
  17. //证书类型
  18. KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
  19. //授信证书 , 授信证书密码(应该是服务端证书密码)
  20. keyStore.load(null, null);
  21. keyStore.setCertificateEntry("certificate",certificate);
  22. TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
  23. trustManagerFactory.init(keyStore);
  24. KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
  25. //证书密码(应该是客户端证书密码)
  26. keyManagerFactory.init(keyStore, "555".toCharArray());
  27. SSLContext sslContext = SSLContext.getInstance("TLS");
  28. sslContext.init(keyManagerFactory.getKeyManagers(),trustManagerFactory.getTrustManagers(),new SecureRandom());
  29. SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
  30. okHttpClient.connectionSpecs(Collections.singletonList(spec))
  31. .sslSocketFactory(sslSocketFactory, Platform.get().trustManager(sslSocketFactory))
  32. .hostnameVerifier(new HostnameVerifier() {
  33. @Override
  34. public boolean verify(String s, SSLSession sslSession) {
  35. return true;
  36. }
  37. });
  38. return okHttpClient.build();
  39. } catch (CertificateException e) {
  40. e.printStackTrace();
  41. } catch (NoSuchProviderException e) {
  42. e.printStackTrace();
  43. } catch (KeyStoreException e) {
  44. e.printStackTrace();
  45. } catch (NoSuchAlgorithmException e) {
  46. e.printStackTrace();
  47. } catch (KeyManagementException e) {
  48. e.printStackTrace();
  49. } catch (UnrecoverableKeyException e) {
  50. e.printStackTrace();
  51. } catch (IOException e) {
  52. e.printStackTrace();
  53. }
  54. return null;
  55. }

好了代码就是这一些,再加几条一些哥们写的.

这篇文章稍简单很多没有做过多的解释,大神勿喷

拓展:

1.用keytool创建Keystore和Trustsotre文件

2. java中 SSL认证和keystore使用

3. Okhttp3 配置Https访问(使用PKCS12)证书

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/210678
推荐阅读
相关标签
  

闽ICP备14008679号