Java 证书pem转KeyStore、jks文件

 一、服务端pem转KeyStore

        CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
        FileInputStream caInputStream = new FileInputStream(caPath);
        List<X509Certificate> caList =  certificateFactory.generateCertificates(caInputStream).stream().map(v->
                (X509Certificate)v).collect(Collectors.toList());
        KeyStore keystore = KeyStore.getInstance("JKS");
        keystore.load(null, null);
        for(X509Certificate ca: caList)
            keystore.setCertificateEntry(ca.getSubjectDN().getName(), ca);

 

二、带有私key的客户端pem转KeyStore

        CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
        FileInputStream caInputStream = new FileInputStream(caPath);
        List<X509Certificate> caList =  certificateFactory.generateCertificates(caInputStream).stream().map(v->
                (X509Certificate)v).collect(Collectors.toList());
        KeyStore keystore = KeyStore.getInstance("JKS");
        keystore.load(null, null);

        privateKeyBase64 = privateKeyBase64.replace("-----BEGIN PRIVATE KEY-----", "")
                .replace("\n", "")
                .replace("-----END PRIVATE KEY-----", "");
        byte[] privateKeyBytes = Base64.decodeBase64(privateKeyBase64.getBytes(StandardCharsets.UTF_8));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        KeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
        PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);
        keystore.setKeyEntry("alias", privateKey, password.toCharArray(), caList.toArray(new X509Certificate[caList.size()]));

三、KeyStore转jks文件

        try(FileOutputStream outputStream = new FileOutputStream("crt.jks")) {
            keystore.store(outputStream, password.toCharArray());
        }

posted @ 2021-10-24 00:37  茅坤宝骏氹  阅读(27)  评论(0)    收藏  举报  来源