如何将PEM格式RSA公私钥转换为DER格式X.509证书或JWK字符串?
解决方案:将RSA密钥转换为X.509证书或JWK格式
错误原因说明
你之前执行openssl x509命令报错,是因为该命令仅用于处理X.509证书文件,但你传入的是原始RSA密钥(私钥/公钥),并非证书,因此无法识别。
方法1:生成X.509自签名证书
基于你的RSA私钥创建自签名证书,步骤如下:
生成证书签名请求(CSR):
openssl req -new -key <private-key-file>.pem -out csr.pem执行时会提示填写国家、组织等信息,可随意填写,不影响JWT验证;如果私钥是加密的,需要输入你设置的密码。
用CSR和私钥生成自签名X.509证书(有效期设为365天):
openssl x509 -req -days 365 -in csr.pem -signkey <private-key-file>.pem -out cert.pem生成的
cert.pem就是PEM格式的X.509证书,可直接复制全部内容(包括首尾标记)到jwt.io的公钥输入框,选择「X.509 Certificate」选项即可验证JWT。若需DER格式证书,可执行:
openssl x509 -in cert.pem -outform DER -out cert.der
方法2:转换为JWK格式
公钥转JWK
直接使用已生成的公钥文件:
openssl pkey -pubin -in <public-key-file>.pem -outform JWK -out public.jwk
或者通过私钥导出公钥并转JWK:
openssl rsa -in <private-key-file>.pem -pubout -outform PEM | openssl pkey -pubin -outform JWK -out public.jwk
私钥转JWK(仅需私钥验证场景)
由于你的私钥是加密的,需先解密(可选,也可直接在命令中输入密码):
openssl rsa -in <encrypted-private-key>.pem -out decrypted-private.pem
再转换为JWK:
openssl pkey -in decrypted-private.pem -outform JWK -out private.jwk
jwt.io使用提示
- 选择X.509证书时,复制
cert.pem的完整内容(包含-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----)到公钥区域。 - 选择JWK时,复制
public.jwk的JSON内容到公钥区域即可。
内容的提问来源于stack exchange,提问作者NotDaPenguinHimself
相关产品推荐
相关产品推荐

