Java 通过编程将JKS转换为PEM
我需要将中的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
@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
-也与加密导出的密钥有关-但这是一个不同的问题。