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证书?相关推荐
- keytool生成证书_创建自签名ssl证书,Java生产jks证书
一.创建自签名ssl证书 下载openssl软件: https://pan.baidu.com/s/1Zy4W7pqSO8caoR_R5pF3DQ #提取码:bjd4 设置环境变量 进入openss ...
- 网络安全--keytool CA签名SSL证书(收费)
本文主要介绍keytool CA签名SSL证书(收费),点击查看keytool自签名SSL证书(免费)以及私钥签名.公钥验签流程 最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式 ...
- 网络--keytool自签名SSL证书(免费)以及私钥签名、公钥验签
本文主要介绍keytool自签名SSL证书(免费)以及私钥签名.公钥验签流程,点击查看keytool CA签名SSL证书(收费) 最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式 ...
- 语言解析ssl包_HPSocket v5.0.1:支持 IPv6 及多 SSL 证书
HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适 ...
- https 自签名SSL证书
介绍 TLS或称传输层安全性,及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装中的Web协议. 使用这种技术,服务器可以在服务器和客户端之间安全地发送流量,而不会被外部各方拦截 ...
- 自签名SSL证书介绍及其缺点
标准SSL证书由受信任的证书颁发机构(CA)颁发和验证,此类证书使用信任链,其中每个证书都由更可靠的证书签名和信任,此链一直延伸到根证书.SSL证书一般需要付费使用,以致很多没有安全预算的企业选择在网 ...
- 使用OpenSSL创建自签名SSL证书
近期的工作中遇到了数据传输加密的需求,就是在数据传输安全层面都要求使用https协议,因此为Web站点安装SSL证书就成了必须,以下就过程记录. 1.需求及选型 需求有两条: 支持内网IP地址 我们很 ...
- 自签名SSL证书有风险吗?
自签名SSL证书的技术操作与自签名证书生成在互联网上有许多教程,许多用户想节省点银子,便选择自签名SSL证书,又担心自签名SSL证书会给网站带来风险.针对这一问题,我们必然要具体问题具体分析. 首先来 ...
- 自签名SSL证书的安全隐患和风险
自签名SSL证书,是指不受信任的任意机构或个人,使用工具自己签发的SSL证书.有一些公司或者个人出于成本的考虑,会选择使用自签名SSL证书.一旦使用这种随意签发的.不受监督.信任的证书,就很容易被黑客 ...
最新文章
- 基于pytorch的模型压缩和模型剪枝Model Prune示例
- 如何优雅的使用和理解线程池
- 原创 | 大数据时代,应让“抗疫”更科学
- System Landscape Recommendations for SAP Customer Activity Repository
- float64toint
- php内置邮件sendmail发送,PHP发送邮件函数sendmail()
- [Spring]IoC容器之进击的注解
- 用 Go 构建一个区块链 -- Part 7: 网络
- java 输出全年日期_Java 输出某一年所有的日期
- 谈一下我们是怎么做数据库单元测试(Database Unit Test)的
- 20张可视化大屏,给数据分析师最全的大屏模板!无代码直接套用
- c++用一级运算比较大小_Python运算符
- ORACLE数据库 基础练习表EMP\DEPT \SALGRADE脚本
- 13号线ab线规划图_有图有真相,北京13号地铁将拆分为AB两条线
- Excel复制到word,清除格式后行间距过大
- 个人整理shell脚本编程笔记
- Active: inactive (dead)
- java实现地图导航功能吗_Java web实现百度地图导航
- Android开发——使用Jword生成本地word文档
- C++类和对象--求三个长方体的体积
热门文章
- python文本解析_Python之文本文件解析
- Spark Streaming(四)kafka搭建(单节点,单broker)
- 计算机网络-基本概念(2)【网络层】-网际控制报文协议ICMP
- Springboot 2.x上传文件大小限制
- ER-Studio的五种关系说明 .
- 分享3 个Python冷知识
- 一行代码不用写,就可以训练、测试、使用模型,这个 star 量 1.5k 的项目帮你做到...
- 按作用域分的话 php的变量可分为,mysql全局变量表
- 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘
- idea部署tomcat项目时,在项目里打断点不能拦截