我正在尝试使用 ECDSA 曲线 secp256k1 生成公钥/私钥对
从 ec256.pem(私钥)生成公钥时,抛出以下错误
“加载密钥“ec256.pem”:格式无效”
用于生成私钥的命令:
openssl ecparam -name secp256k1 -out secp256k1.pem
openssl ecparam -in secp256k1.pem -genkey -noout -out ec256.pem
chmod 400 ec256.pem
用于生成公钥的命令:
ssh-keygen -y -f ec256.pem
Below is the error thrown on running the above cmd ,
Load key "ec256.pem": invalid format
使用的版本是
OpenSSH_7.4p1,OpenSSL 1.0.2k-fips
我需要为 ec256.pem 私钥生成 ssh 格式的公钥
如果我查看标准中需要支持的曲线,RFC 5656:“安全 Shell 传输层中的椭圆曲线算法集成”(第 10 节),那么我没有看到为 secp256k1 列出的任何支持。当然,实现仍然可以实现它,但这将以与其他实现不兼容为代价。
所以我认为无法解析私钥的原因很简单,就是不支持它的格式。如果您只是将曲线替换为 secp256r1(一条随机素数曲线而不是 secp256k1 Koblitz 曲线,请注意其中的“r”而不是“k”),那么一切都会顺利运行并处于相同或更高的安全级别。私钥的结构与 secp256k1 曲线相同,因此这清楚地表明问题出在曲线而不是文件格式上。
或者,您可以选择更花哨的Ed25519 曲线,可能会以向后兼容性和更多麻烦为代价。这可能与 OpenSSL 命令行不兼容,请参阅下面的评论。