首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

okhttp 使用笔记

前言 okhttp是一个网络请求框架,也是目前市面上使用最多的网络框架之一。 之前参与的项目一直没使用,这次刚好有个机会使用OKHttp,记录下。...certificatePinner; // HTTPS校验通过验证证书公钥来判断连接是否可用 final Authenticator proxyAuthenticator; final...返回一个RealCall对象,它是 Call⼝的实现....所以https请求会有证书相关的验证。 1. 使用CA颁发的证书 okhttp默认情况下是支持https协议的网站的,例如https://www.baidu.com 2....使用签名证书 需要自己处理证书校验。( 可以选择信任所有证书 或者 自定义证书校验 ) a. 信任所有证书(处理比较粗暴,忽略安全问题,不建议使用) 处理方式可以google查询。有很多介绍 b.

47310

Android使用OkHttp请求自签名的https网站的示例

但是一些公司又不想花一笔钱去CA申请证书,所以就采用自签名证书。...但是如果是你们公司自签名(即自己用keytool生成的证书,而不是采用通过CA认证的证书)的服务器,OkHttp是无法访问的,例如访问12306网站(https://kyfw.12306.cn/otn/...网站接收浏览器发来的数据之后,通过私钥进行解密,然后HASH校验,如果一致,则使用浏览器发来的数字串使加密一段握手消息发给浏览器。 浏览器解密,并HASH校验,没有问题,则握手结束。...握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。 使用OKHTTP请求自签名的https服务器数据 以下我们使用12306网站为例 1....(sslSocketFactory, trustManager) .build(); } catch (IOException e) { e.printStackTrace(); } } /** * 以流的方式添加信任证书

1.5K41
您找到你想要的搜索结果了吗?
是的
没有找到

一文读懂Https的安全性原理、数字证书、单项认证、双项认证等

当然自签名证书也是不受信任的。...现在可以看看使用证书是怎么样提高安全性,避免中间人攻击的,用一张简单的流程图来说明: ? 6、HTTPS单项认证 所谓单项认证只要服务端配置证书,客户端在请求服务端验证服务器的证书即可。...那么此时再遭遇中间人攻击劫持我们的请求由于黑客服务器没有相应的证书,此时HTTPS请求校验不通过,则无法与黑客的服务器建立起连接。...,否则返回false,检验不通过,断开连接。...收到后,服务器验证客户端的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。 f. 客户端告诉服务器自己所能够支持的通讯对称密码方案。 g.

2.3K20

java HttpsURLConnection 实现https请求

客户端在进行SSL连接,JSSE将根据这个文件中的证书决定是否信任服务器端的证书。   ...通过自己实现该方法,可以使之信任我们指定的任何证书。在实现该方法,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。   ...其实,HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接,SSLSocket对象是由SSLSocketFactory生成的。...HttpsURLConnection提供了方法setSSLSocketFactory(SSLSocketFactory)设置它使用SSLSocketFactory对象。...SSLSocketFactory通过SSLContext对象来获得,在初始化SSLContext对象,可指定信任管理器对象。下面用一个图简单表示这几个JSSE类的关系:  ?

2.2K30

移动安全入门之常见抓包问题二

但是在APP里面就不一样,APP是HTTPS的服务提供方自己开发的客户端,开发者可以先将自己服务器的证书打包内置到自己的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后...认证方式:证书锁定 证书锁定(SSL/TLS Pinning)顾名思义,将服务器提供的SSL/TLS证书内置到移动端开发的APP客户端中,当客户端发起请求通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性...证书锁定需要把服务器的公钥证书(.crt 或者 .cer 等格式)提前下载并内置到App客户端中,创建TrustManager 将公钥证书加进去。当请求发起通过比对证书内容来确定连接的合法性。...认证方式:公钥锁定 公钥锁定则需提取证书中的公钥内置到客户端中,通过比对公钥值来验证连接的合法性,由于证书更换依然可以保证公钥一致,所以公钥锁定不存在客户端频繁更换证书的问题。...若使用配置文件方式可以直接将文件中校验的部分或注释掉,再重新打包和签名即可。 案例一 设置完代理后打开某app提示网络错误无法正常使用

1.3K20

HTTPS 原理浅析及其在 Android 中的使用

; (3) 如果信息审核通过,CA会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。...;颁发者和使用者相同,自己为自己签名,叫自签名证书; (4) 证书=公钥+申请者与颁发者信息+签名; 3.HTTPS协议原理 (1) HTTPS的历史 HTTPS协议历史简介: (1) SSL协议的第一个版本由...它通常会携带close_notify异常,在连接关闭使用,报告错误。...可能是购买的CA证书比较新,Android系统还未信任,也可能是服务器使用的是自签名证书(这个在测试阶段经常遇到)。   ...在本文的第5部分代码实现模块,会详细的讲解如何让Android应用信任自签名证书集合或者跳过证书校验的环节。 (2) 域名验证失败   SSL连接有两个关键环节。

3.7K40

Android通信安全之HTTPS

前面说到,当发起 HTTPS 请求,可能抛起一个异常,以上面说到的代码来看: try { URL url = new URL("https://certs.cac.washington.edu...path not found. ... 16 more 解决方案一 不论是权威机构颁发的证书还是自签名的,打包一份到 app 内部,比如存放在 asset 里。...通过这份内置的证书初始化一个KeyStore,然后用这个KeyStore去引导生成的TrustManager来提供验证,具体代码如下: try { CertificateFactory cf = CertificateFactory.getInstance...解决方案2 同方案1,打包一份到证书到 app 内部,但不通过KeyStore去引导生成的TrustManager,而是干脆直接自定义一个TrustManager,自己实现校验逻辑; 校验逻辑主要包括...: •服务器证书是否过期 •证书签名是否合法 try { CertificateFactory cf = CertificateFactory.getInstance("X.509");

1.7K90

【OkHttp】OkHttp 源码分析 ( OkHttpClient.Builder 构造器源码分析 )

协议 , 创建 SSLSocket ; 涉及到 HTTPS 证书信任问题 , 如果证书不收信任 , 会报异常 ; @Nullable SSLSocketFactory sslSocketFactory...; 证书链清洁器 : 使用 HTTPS 协议 , 使用 Java TSL 相关 API , 获取有效证书 , 清除不相关证书 ; @Nullable CertificateChainCleaner certificateChainCleaner...; 主机名称校验器 : 使用 HTTPS 协议 , 如果无法识别 URL 中的主机名称 , 就要进行主机验证 ; HostnameVerifier hostnameVerifier; 证书锁 : 使用...HTTPS 协议 , 约束可以信任的证书 , 防止不受信任的证书的攻击行为 , 如果没有受信任的证书 , 报异常 ; CertificatePinner certificatePinner; 身份认证器...1 个客户端与 1 个服务器之间的连接是 1 个 Connection 连接 ; 这些连接都放在该连接池中 , 统一管理 ; 如果有相同的 HTTP 请求 , 则可以使用连接池中的连接 ; ConnectionPool

74720

App安全测试—Android安全测试规范

整改建议 使用对称加密算法避免使用DES算法 使用RSA算法加密使用NoPadding 在选择加密模式避免使用ECB模式 使用RSA加密,建议密钥长度大于1024bit 数据传输测试 敏感信息明文传输...,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。...预期结果:在使用证书的时候进行相关校验 整改建议:建议开发者对SSL证书进行强校验,包括证书是否合法、主机域名是否合法和证书的有效期。...执行步骤 使用adb shell连接设备 进入应用目录cd /data/data/xxxx(包名) 执行命令ls -al,查看当前目录下所有文件权限。...WebView远程代码执行漏洞 安全风险:Webview中接口addJavascriptInterface可通过webview对象向页面javascript导出java本地接口,可能导致任意命令执行。

4.1K42

【胖虎的逆向之路】Android自制Https证书实现双向认证

(CA)的证书,来确认服务器的合法性~ 1.4.2 服务器对客户的身份认证 也可通过公钥技术和证书进行认证,也可通过用户名,password 来认证~ 1.4.3 建立服务器与客户之间安全的数据通道 SSL...客户端中因为在操作系统中就预置了 CA 的公钥,所以支持解密签名 2.证书生成 基本概念讲完之后,我们来实际操作一下证书的生成,博主这边主要使用到了open ssl~ 2.1 生成根证书(CA) 首先,...生成一个自签名的根证书作为根证书颁发机构(CA) 并生成根证书~ 使用 OpenSSL 工具来生成: openssl genrsa -out ca.key 2048 openssl req -x509...填写这些信息要确保准确性,但在测试环境中可以使用虚拟的信息。...: 密钥和证书必须得到妥善保护,确保只有授权的人能够访问 证书有效期: 在创建证书,设置适当的有效期限,确保证书在过期之前能够持续有效 证书更新: 定期更新证书以确保安全性。

65610

Webservice 通过SSL加密传输

本文的目的就是要演示Web服务客户端如何通过安全的HTTPS协议使用签名的安全证书使用签名证书的问题   HTTPS通常可以无缝地与不安全的HTTP协议一起使用,而不中断用户的体验。...通常Web浏览器会显示一个对话框,询问您是否希望信任一个自签名证书。   Web浏览器的这一特性很好,因为当其获得一个由未知认证机构签名证书,还有机会进行处理。...在开发用于通过HTTPS进行通信的Web服务客户端,这就没那么容易了。在运行Java代码,不会出现询问是否信任一个不可信的认证机构的对话框。...因为该证书是自签名的,所以Web浏览器将显示一个对话框,询问是否信任该连接。如果接受,则所有的通信都将通过HTTPS进行,从而成为安全的。...它在8080端口使用了不安全的HTTP协议。为什么不在8443端口使用HTTPS呢?这是因为自签名证书,WSDL2Java工具将遇到与本文所试图解决的证书问题完全相同的问题。

1.6K20

Java网络编程进阶:通过JSSE创建安全的数据通信!

小编说:本文作者孙卫琴,知名IT作家和Java专家。本文将通过一个范例向大家介绍JSSE是如何实现安全的网络通信的。 ---- 在网络上,信息在由源主机到目标主机的传输过程中会经过其他计算机。...但在使用网上银行或者进行信用卡交易,网络上的信息有可能被非法分子监听,从而导致个人隐私的泄露。...java.security.cert包:包括处理安全证书的类,如X509Certificate类。X.509是由国际电信联盟(ITU-T)制定的安全证书的标准。...SSLContext.getInstance("SSL"); 38 sslContext.init(kmf.getKeyManagers(), null, null); 39 40 //当要求客户端提供安全证书...这个SSLContext对象通过TrustManager来管理所信任的安全证书。在本例中,TrustManager所信任的安全证书位于test.keystore密钥库文件中。

1.2K20

深入OKHttp之TLS

套接字 在 OKHttp 中,我们可以找到,如果是 TLS 连接,那么一定会有一个 SSLSocketFactory ,这个类我们一般并不会设置。...如果没有为这个 hostname 固定的证书,则不执行任何操作。okhttp在 TLS 握手之后使用连接之前调用此操作。 那么到底啥是 ssl pinner呢?...我们将客户端的代码中写上只接受指定host的证书,不接受操作系统或者浏览器内置的 CA 根证书对应的任何证书通过这种方式,保障了客户端和服务端通信的唯一性和安全性。...提取证书中的公钥内置到客户端,通过与服务器端对比公钥值来验证合法性,并且在证书续期后,公钥也可以保持不变,避免了证书锁定的过期问题。...new String(alpnResult, Util.UTF_8) : null; 这里会通过反射调用一些系统方法获取我们需要建立的连接协议。

2K10

二进制安装k8s集群(2)-制作ssl证书

我们这里用openssl制作证书,在制作之前先修改配置文件(通过subjectAltName机制),可以让我们的证书支持多个cn或者ip,这样证书放在不同的server上就比较方便了。...一是trust server发过来的证书,这个可以通过把server的证书或者签发server证书的根证书import到client的环境里解决。...(之前遇到有用java的同学只要遇到ssl问题就customize sslsocketfactory,然后trust任何证书,always verify pass,这个虽然管用,但是却有些暴力) 修改...生成自签名ca证书 openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 3650 ?...生成docker server证书并用ca证书签名 openssl ca -in docker-server.csr -out docker-server.crt -cert ca.crt -keyfile

92950

使用HttpDns降低DNS劫持风险

支持COOKIE存取的网络库,在存取COOKIE,从URL中提取的域名通常是key的重要部分。 连接管理。...连接的 Keep-Alive参数,可以让执行HTTP请求的TCP连接在请求结束后不会被立即关闭,而是先保持一段时间。为新发起的请求查找可用连接,主要的依据也是URL中的域名。...HTTPS的SNI及证书验证。SSL/TLS的SNI扩展用于支持虚拟主机托管。在SSL/TLS握手期间,客户端通过该扩展将要请求的域名发送给服务器,以便可以取到适当的证书。...HostnameVerifier 的 verify() 传回来的域名是url中的ip地址,但我们可以在定制的域名证书验证逻辑中,使用原始的真实的域名与服务器返回的证书一起做验证。...具体而实现上,使用那些可以定制Dns逻辑的网络库,比如OkHttp,或者使用Chromium的网络库基础上做的库,实现域名解析的接口,并在该接口的实现中通过HttpDns模块来执行域名解析。

1.8K40
领券