載入金鑰“ec256.pem”:嘗試從私鑰產生公鑰時拋出無效格式

載入金鑰“ec256.pem”:嘗試從私鑰產生公鑰時拋出無效格式

我正在嘗試使用 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 格式的公鑰

答案1

如果我查看需要支援的曲線標準,RFC 5656:「安全外殼傳輸層中的橢圓曲線演算法整合」(第 10 節)然後我沒有看到任何對 secp256k1 的支援。當然,實現仍然可以實現它,但這將以與其他實現不相容為代價。

所以我認為私鑰無法解析的原因很簡單,就是因為它的格式不支援。如果您只是將曲線替換為 secp256r1(隨機素數曲線而不是 secp256k1 Koblitz 曲線,請注意其中的“r”而不是“k”),那麼一切都會順利運行,並且安全級別相同或更高。私鑰的結構與 secp256k1 曲線相同,因此這清楚地表明問題在於曲線而不是檔案格式。

或者你可以選擇更花俏的Ed25519曲線,可能會以向後相容性和更多麻煩為代價。這可能與 OpenSSL 命令列不相容,請參閱下面的評論

相關內容