Java证书读取的两种方式

xiaoxiao2021-02-28  115

直接点来思路:

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

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

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端 读取证书的代码流程,请关注本博客,欢迎分享;

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

转载请注明原文地址: https://www.6miu.com/read-18418.html

最新回复(0)