从我们的应用程序获取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证书?相关推荐

  1. keytool生成证书_创建自签名ssl证书,Java生产jks证书

    一.创建自签名ssl证书 下载openssl软件: https://pan.baidu.com/s/1Zy4W7pqSO8caoR_R5pF3DQ  #提取码:bjd4 设置环境变量 进入openss ...

  2. 网络安全--keytool CA签名SSL证书(收费)

    本文主要介绍keytool CA签名SSL证书(收费),点击查看keytool自签名SSL证书(免费)以及私钥签名.公钥验签流程 最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式 ...

  3. 网络--keytool自签名SSL证书(免费)以及私钥签名、公钥验签

    本文主要介绍keytool自签名SSL证书(免费)以及私钥签名.公钥验签流程,点击查看keytool CA签名SSL证书(收费) 最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式 ...

  4. 语言解析ssl包_HPSocket v5.0.1:支持 IPv6 及多 SSL 证书

    HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适 ...

  5. https 自签名SSL证书

    介绍 TLS或称传输层安全性,及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装中的Web协议. 使用这种技术,服务器可以在服务器和客户端之间安全地发送流量,而不会被外部各方拦截 ...

  6. 自签名SSL证书介绍及其缺点

    标准SSL证书由受信任的证书颁发机构(CA)颁发和验证,此类证书使用信任链,其中每个证书都由更可靠的证书签名和信任,此链一直延伸到根证书.SSL证书一般需要付费使用,以致很多没有安全预算的企业选择在网 ...

  7. 使用OpenSSL创建自签名SSL证书

    近期的工作中遇到了数据传输加密的需求,就是在数据传输安全层面都要求使用https协议,因此为Web站点安装SSL证书就成了必须,以下就过程记录. 1.需求及选型 需求有两条: 支持内网IP地址 我们很 ...

  8. 自签名SSL证书有风险吗?

    自签名SSL证书的技术操作与自签名证书生成在互联网上有许多教程,许多用户想节省点银子,便选择自签名SSL证书,又担心自签名SSL证书会给网站带来风险.针对这一问题,我们必然要具体问题具体分析. 首先来 ...

  9. 自签名SSL证书的安全隐患和风险

    自签名SSL证书,是指不受信任的任意机构或个人,使用工具自己签发的SSL证书.有一些公司或者个人出于成本的考虑,会选择使用自签名SSL证书.一旦使用这种随意签发的.不受监督.信任的证书,就很容易被黑客 ...

最新文章

  1. 基于pytorch的模型压缩和模型剪枝Model Prune示例
  2. 如何优雅的使用和理解线程池
  3. 原创 | 大数据时代,应让“抗疫”更科学
  4. System Landscape Recommendations for SAP Customer Activity Repository
  5. float64toint
  6. php内置邮件sendmail发送,PHP发送邮件函数sendmail()
  7. [Spring]IoC容器之进击的注解
  8. 用 Go 构建一个区块链 -- Part 7: 网络
  9. java 输出全年日期_Java 输出某一年所有的日期
  10. 谈一下我们是怎么做数据库单元测试(Database Unit Test)的
  11. 20张可视化大屏,给数据分析师最全的大屏模板!无代码直接套用
  12. c++用一级运算比较大小_Python运算符
  13. ORACLE数据库 基础练习表EMP\DEPT \SALGRADE脚本
  14. 13号线ab线规划图_有图有真相,北京13号地铁将拆分为AB两条线
  15. Excel复制到word,清除格式后行间距过大
  16. 个人整理shell脚本编程笔记
  17. Active: inactive (dead)
  18. java实现地图导航功能吗_Java web实现百度地图导航
  19. Android开发——使用Jword生成本地word文档
  20. C++类和对象--求三个长方体的体积

热门文章

  1. python文本解析_Python之文本文件解析
  2. Spark Streaming(四)kafka搭建(单节点,单broker)
  3. 计算机网络-基本概念(2)【网络层】-网际控制报文协议ICMP
  4. Springboot 2.x上传文件大小限制
  5. ER-Studio的五种关系说明 .
  6. 分享3 个Python冷知识
  7. 一行代码不用写,就可以训练、测试、使用模型,这个 star 量 1.5k 的项目帮你做到...
  8. 按作用域分的话 php的变量可分为,mysql全局变量表
  9. 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘
  10. idea部署tomcat项目时,在项目里打断点不能拦截