使用自生成OpenSSH ed25519私钥进行openssl自签名证书报错如何解决
根因说明
你生成的是ed25519类型的SSH私钥,默认输出为OPENSSH私有格式,OpenSSL 1.1.1f版本原生不支持直接读取该格式。且你之前使用的openssl rsa是RSA密钥专属处理命令,对ed25519密钥无效。
解决方案
方案1:转换现有ed25519私钥为OpenSSL兼容格式
不要用-p参数就地修改,使用导出命令生成新的PKCS8格式PEM私钥:
ssh-keygen -f ~/.ssh/my-key -e -m pkcs8 > my-key.pem
转换完成后即可正常调用openssl生成证书请求:
openssl req -new -subj "/C=GC/CN=foo" -addext "subjectAltName = DNS:x.y.z" -addext "certificatePolicies = 1.2.3.4" -key my-key.pem -out req.pem
方案2:直接生成OpenSSL原生支持的ed25519密钥
如果不需要保留现有密钥,可直接用openssl生成对应私钥,省去转换步骤:
openssl genpkey -algorithm ed25519 -out my-key.pem
如果需要SSH场景使用的公钥,可通过以下命令导出:
ssh-keygen -y -f my-key.pem > my-key.pub
验证方法
转换/生成完成后可执行以下命令验证私钥有效性,无报错即为正常:
openssl pkey -in my-key.pem -check
内容的提问来源于stack exchange,提问作者Evian
相关产品推荐
相关产品推荐

