Java证书读取的两种方式

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/qq_37022150/article/details/74910488

直接点来思路:

这两种方式,原本就是一种方式,这里我放两种案例主要是针对不同的项目,所展现的形式不一样

以下是两种方式的核心思路:

1, 方法的参数 .p12证书,密码,keyStore类型,算法,协议;
2, 将字符串密码转换为字符数组;
3, KeyStore获取实例,getInstance(keystoreType);
4, 其调用 load(keyStore,pwdChars);
5, KeyManagerFactory获取实例, getInstance(alogrithm);
6, 其调用 init(keyStore对象,pwdchars);

7, TrustManagerFactory 获取实例, getInstance(alogrithm);
8, 其调用 初始化init (KeyStore(null));
9, SSLContext 获取实例, getInstance(protocol);
10, 其初始化, init(kf.getKeyManager(),ktf.getTrustManager(),null);
11, 最后返回sslcontext.getSocketFactory();

结合项目一所展示的内容:

第一步: 创建类,类里面是规定的常量:

其中我们使用到的是这三个参数:


第二步: 创建一个方法,主要是核心思路的展示,这里要非常的详细


具体步骤简介:

第一步骤:

public static SocketFactory createSocketFactory(InputStream keyStore, String password, String keystoreType, String algorithm, String protocol) {}
keyStore-----java代码读取的证书内容作为流的形式输出;
password-----上面.p12证书创建时所输入的密码;
keyStoreType---"PKCS12";
algorithm----"sunx509";
protocol----"TLS";

第二步骤:

char[] pwdChars = password.toCharArray()
将字符串密码转换为字符数组;

第三步骤:

KeyStore ks = KeyStore.getInstance(keystoreType);
获取KeyStore实例;

第四步骤:

ks.load(keyStore, pwdChars);
使用keyStore对象加载证书及其密码;

第五步骤:

KeyManagerFactory kf = KeyManagerFactory.getInstance(algorithm);
获取KeyManagerFactory

第六步骤:

kf.init(ks, pwdChars);
其调用 init(keyStore对象,pwdchars)

第七步骤:

TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);
获取TrustManagerFactory;

第八步骤:

tmf.init((KeyStore)null);
初始化TrustManagerFactory对象;

第九步骤:

SSLContext context = SSLContext.getInstance(protocol);
获取SSLContext实例;

第十步骤:

context.init(kf.getKeyManagers(), tmf.getTrustManagers(), null);
初始化 SSLContext对象,包含的参数 kf.getKeyManagers(), tmf.getTrustManagers();

第十一步骤:

return context.getSocketFactory();

返回SocketFactory对象

至此第一种方式的思路及其步骤的介绍已经完毕,接下来直接看第二种方式;

String password = ""; 
获取密码两种方式: 
 方式一: 直接写配置文件,在service层中加载配置文件,获取密码,适用场景比较窄小,密码较多,不方便管理;
 方式二: 文件名以当前密码命名,通过读取全路径,然后截取,获取当前密码;
FileInputStream fileInputStream = new FileInputStream("xxxx.p12");
加载.p12证书;
KeyStore keyStore = KeyStore.getInstance("PKCS12");
获取KeyStore实例;
keyStore.load(fileInputStream, password.toCharArray());
加载keyStore的load方法,参数是.p12证书,及其它对应的密码;
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("sunx509");
获取KeyManagerFactory实例;
keyManagerFactory.init(keyStore, password.toCharArray());
KeyManagerFactory 初始化方法;

第二种方式 是项目中读取证书的代码的展示,只是部分代码,请酌情应用到自己的代码里面;


以后还会介绍关于 app端 读取证书的代码流程,请关注本博客,欢迎分享;

我们博客的口号是 分享,共勉,互促;大笑大笑大笑生气






猜你喜欢

转载自blog.csdn.net/qq_37022150/article/details/74910488