如何使用 openssl 将 java 生成的 public 密钥转换为 pem 格式
How to convert a java generated public key to pem format with openssl
我有一个 public RSA 密钥,如下所示:
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelri
LEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCu
b3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB
我需要将其转换为 PEM 格式,以便我可以使用此 public 键编写自己的 python 代码,我看到有很多相反操作的答案,但现在我需要将其从 JAVA 样式转换为 PEM,有人可以帮忙吗?
您可以创建这样的 bash 脚本:
#!/bin/bash
# Loop through all the certs in the current folder that have the .cer extension
for cert in *.cer
do
#get filename wihtout ext
filename="${cert%.*}"
#echo ${filename}
#convert to PEM
openssl x509 -inform der -in ${cert} -outform pem -out ${filename}.crt
done
我用它来将证书转换为 pem 格式。希望能帮到你
只需将 base64 编码的公钥转换回 openssl:
echo "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | base64 -d | openssl rsa -inform der -pubin -out rsakey.pub
-inform der
告诉 openssl 将密钥作为二进制(默认为 PEM)
-pubin
表示期待 public(默认为私有)
-out
就是写key
另一种方法是在 base64 编码的 rsa public 密钥前后附加 openssl 标签:
sed 's/^/-----BEGIN PUBLIC KEY-----\n/;s/$/\n-----END PUBLIC KEY-----/' <<< "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | openssl rsa -pubin
我有一个 public RSA 密钥,如下所示:
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelri
LEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCu
b3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB
我需要将其转换为 PEM 格式,以便我可以使用此 public 键编写自己的 python 代码,我看到有很多相反操作的答案,但现在我需要将其从 JAVA 样式转换为 PEM,有人可以帮忙吗?
您可以创建这样的 bash 脚本:
#!/bin/bash
# Loop through all the certs in the current folder that have the .cer extension
for cert in *.cer
do
#get filename wihtout ext
filename="${cert%.*}"
#echo ${filename}
#convert to PEM
openssl x509 -inform der -in ${cert} -outform pem -out ${filename}.crt
done
我用它来将证书转换为 pem 格式。希望能帮到你
只需将 base64 编码的公钥转换回 openssl:
echo "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | base64 -d | openssl rsa -inform der -pubin -out rsakey.pub
-inform der
告诉 openssl 将密钥作为二进制(默认为 PEM)
-pubin
表示期待 public(默认为私有)
-out
就是写key
另一种方法是在 base64 编码的 rsa public 密钥前后附加 openssl 标签:
sed 's/^/-----BEGIN PUBLIC KEY-----\n/;s/$/\n-----END PUBLIC KEY-----/' <<< "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | openssl rsa -pubin