由于互联网全面普及,未来网络安全这块的发展空间很大的。随着物联网的不断应用,人们的生活和网络已经密不可分,网络上承载着数以亿计的各种信息,这些数据信息是个人、企业甚至是国家的战略性资源,所以保障他们的安全是一件非常重要的事情。因此,在未来,各个企业定会在网络安全这块倾尽余力。
所以为了保障网络安全,最近公司也在做双向验证的https接口,和其它企业进行对接。但是发现网上针对双向验证的资料少之又少,大部分还是单向验证,还有些博客是用绕过验证的方式提交数据,并且有些博客还是错误的。按照其他博客的方法操作不但不能实现,反而还浪费了大量的时间。本文章只针对前端(Android)端的操作进行解读,后台的配置会简略的说明。
本文章只针对自制证书进行解读。双向SSL主要是看后台的设计,双向验证有两个证书,一个是根证书,一个是客户端证书。根证书由后台生成,客户端证书也可以安排由后台生成。证书的生成可以参考次链接(点击此处)。生成的证书格式为jks。但是android证书类型不支持解析jks文件,我们需要通过转换工具 https://download.csdn.net/download/z879381359/11225612 下载次工具,进行格式转换。
将两个jks转换成bks,然后再把资源放到android的assets目录中
所有工作就已经准备就绪,开始写代码了
补充:代码用的是databinding没有或者不熟悉的话大伙们要改成findviewbyId哦,
导入包:
implementation "com.squareup.retrofit2:converter-scalars:2.3.0"
implementation "com.squareup.retrofit2:converter-gson:2.3.0"
implementation "com.squareup.okhttp3:logging-interceptor:3.8.1"
主类
public class TestActivity extends Activity {
private TestActivityBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.binding = DataBindingUtil.setContentView(this, R.layout.test_activity);
this.binding.setActivity(this);
this.binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
query();
}
});
query();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public void query(){
String url = "https://192.168.***";
//创建日志拦截器,用于日志打印
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient