1.客户端的P12证书 :发送给服务端验证
2.服务端的cer证书: App本地需要转BKS证书,因为安卓只识别此证书
CER转BKS
keytool -importcert -v -trustcacerts -alias 位置1 \
-file 位置2 \
-keystore 位置3 -storetype BKS \
-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider \
-providerpath 位置4 -storepass 位置5
例子
keytool -importcert -v -trustcacerts -alias xx -file E:\bks\xx.cer -keystore E:\bks\xx.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath E:\bks\bcprov-jdk15on-146.jar -storepass xxxxxx
将证书内容提取成字符串:
keytool -printcert -rfc -file xxx.cer
查看bks证书库列表
命令:
keytool -list -rfc -keystore mytrustcerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass '123456'
<pre t="code" l="java">final Request.Builder builder = new Request.Builder().url(url)
builder.addHeader(key,value) //将请求头以键值对形式添加,可添加多个请求头
final Request request = builder.build()
final OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.build()//设置各种超时时间
final Call call = client.newCall(request)
new Thread(new Runnable() {
@Override
public void run() {
try {
Response response = call.execute()
if (response != null) {
} else {
}
} catch (IOException e) {
e.printStackTrace()
}
}
}).start()
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
客户端会验证公钥是否有效。如果没有问题,就回生成一个随机值,并对其进行加密,(这个随机值其实就是对称加密的私钥)
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容进行对称加密。
首先用的是非对称加密。把公钥给客户端,私钥在服务端。客户端用公钥验证通过后,会生成私钥进行对称加密。然后传给后台。
为什么这么做呢。
图中的方法是验证服务端购买的证书。如果是信任所有证书的。这三个重写的方法不需要做 *** 作。直接用默认即可。
详细解析 HTTP 与 HTTPS 的区别
非对称加密和对称加密的区别
如有错误。还望指正,非常感谢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)