Java 通过编程将JKS转换为PEM

Java 通过编程将JKS转换为PEM,java,converter,pem,jks,Java,Converter,Pem,Jks,我需要将中的JKS(密码保护)转换为包含密钥对(或选定别名)的.PEM,以供其他服务使用 到目前为止,我写了以下内容: @Transactional public ResponseEntity<String> getPublicKeyFromJKS(long jksid) { try { //1. Lift the entity JKSFile jksFile = jksFileRepo.getOne(jksid); //2

我需要将中的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());
@Transactional
公共响应getPublicKeyFromJKS(长jksid){
试一试{
//1.解除实体
JKSFile JKSFile=jksFileRepo.getOne(jksid);
//2.从S3获取对象
S3Object object=getS3ObjectService.getS3Object(jksFile.getS3ObjectKey());
System.out.println(object.getObjectContent().getHttpRequest());
InputStream in=object.getObjectContent();
//3.制作密钥库。。。
KeyStore KeyStore=KeyStore.getInstance(“JKS”);
load(在rsaConfig.getKeystorePassword().toCharArray()中);
//4.获取PEM格式文件的密钥。
PrivateKey PrivateKey=(PrivateKey)keyStore.getKey(“access”,rsaConfig.getKeystorePassword().toCharArray());
证书证书=keyStore.getCertificate(“访问”);
PublicKey PublicKey=certificate.getPublicKey();
KeyPair KeyPair=新的密钥对(公钥、私钥);
System.out.println(keyPair.getPrivate().toString());
System.out.println(keyPair.getPublic().toString());
我正在从AmazonS3存储桶中提取请求的JK并读取私钥和公钥,没有问题……但我现在希望能够将它们放入PEM格式的密钥库(供其他服务使用)


感谢您的建议!我希望通过编程实现这一点……不要使用java命令行keytool。

pem不是密钥库,而是base64编码的der,它本身就是存储单个密钥或证书的格式。因此,无法将密钥库转换为pem-您需要将其转换为多个pem,或者只转换一个pem密钥库中的单个项。看看这个,啊,我明白了。谢谢。所以我想我的问题是“如何从JKS获取密钥,并将其作为PEM格式的证书”?说明如何写出pem。另请参见。基本上分别写出密钥和证书-传统上,密钥将具有
.key
扩展名和证书
.pem
-也与加密导出的密钥有关-但这是一个不同的问题。