1.需求
需要访问一个https的接口,是基于tlsv1.2协议的,目前有ca根证书(ca.cert),客户端证书(sparkercomm01.cert)和客户端私钥文件(sparkercomm01.key)
2.转化成jdk能识别的文件
2.1.ca根证书添加到jdk密钥库
执行命令,得到ca.jks文件
keytool -import -alias ca -keystore ca.jks -file ca.cert -storepass 12345678 -keypass 12345678 -noprompt
2.2.客户端证书和私钥转成pkcs12文件
执行命令,得到sparkercomm01.pkcs12文件
openssl pkcs12 -export -clcerts -in sparkercomm01.cert -inkey sparkercomm01.key -out sparkercomm01.pkcs12
密码是12345678
3.java客户端加载证书文件
import lombok.extern.slf4j.Slf4j;
import javax.net.ssl.*;
import java.io.*;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.*;
import java.security.cert.CertificateException;@Slf4j
public class CertUtils {private static final String POST = "POST";private static final String CHARSET = "UTF-8";private static TrustManagerFactory loadCaCert(CertConfig certConfig ){InputStream inputStream = null;try {KeyStore trustStore = KeyStore.getInstance("JKS"); // 或 "PKCS12"inputStream = Files.newInputStream(Paths.get(certConfig .getCaCertPath())); // 替换为你的信任库文件路径trustStore.load(inputStream,