首页 > 解决方案 > 以编程方式将 JKS 转换为 PEM

问题描述

我需要将 JKS(受密码保护)转换为包含密钥对(或选定别名)的 .PEM,以供其他服务使用。

到目前为止,我已经写了这个:

 @Transactional
public ResponseEntity<String> getPublicKeyFromJKS(long jksid) {
    try {
        //1. Lift the entity
        JKSFile jksFile = jksFileRepo.getOne(jksid);

        //2. Get the Object from S3
        S3Object object = getS3ObjectService.getS3Object(jksFile.getS3ObjectKey());
        System.out.println(object.getObjectContent().getHttpRequest());
        InputStream in = object.getObjectContent();

        //3. Make KeyStore...
        KeyStore keyStore = KeyStore.getInstance("JKS");
        keyStore.load(in, rsaConfig.getKeystorePassword().toCharArray());

        //4. Get keys to PEM formatted file.
        PrivateKey privateKey = (PrivateKey) keyStore.getKey("access", rsaConfig.getKeystorePassword().toCharArray());
        Certificate certificate = keyStore.getCertificate("access");
        PublicKey publicKey = certificate.getPublicKey();

        KeyPair keyPair = new KeyPair(publicKey, privateKey);


        System.out.println(keyPair.getPrivate().toString());
        System.out.println(keyPair.getPublic().toString());

我正在从我的亚马逊 S3 存储桶中提取请求的 JKS 并毫无问题地读取私钥和公钥……但我现在希望能够将它们放入 PEM 格式的密钥库(供其他服务使用)。

感谢您的任何建议!我希望以编程方式...不使用 java 命令行 keytool。

标签: javaconverterpemjks

解决方案


推荐阅读