ECDSAキーを操作するには、 python-ecdsa ライブラリを使用しています。残念ながら、OpenSSH形式で提供されている場合、このライブラリはキーファイルを適切に処理できません。代わりに、次のコマンドを使用して、ライブラリが処理できるPEM形式でそれらを生成します。
ssh-keygen -t ecdsa -b 256 -f /home/user/Documents/ECDSA/key -m pem
ただし、PEMでキーファイルを問題なく処理することはできますが、最終的にはOpenSSH形式でそれらを必要とします。以下のアイデアが思い浮かびます:
これらのオプションはありますか?タイプがRSAの場合、次のようにフォーマットを変換できることを知っています。
ssh-keygen -f id_rsa.pub -m 'PEM' -e > public.pem
ただし、ECDSAでは不可能です。
do_convert_to_pem: unsupported key type ECDSA
どのようなオプションがありますか?
そのライブラリで使用しようとしているキー(プライベートまたはパブリック、そのライブラリが署名と検証を呼び出しているキー)、またはその両方ですか?
_ssh-keygen -t ecdsa -b $n -m pem
_(OpenSSH 7.8以降)空のパスワードを使用は、OpenSSL互換の暗号化されていない形式で秘密鍵ファイルを生成します(ヘッダー_-----BEGIN EC PRIVATE KEY-----
_付き)ライブラリが必要とするもの。 public OpenSSH独自の形式でキーファイルを生成します。これは、OpenSSLがライブラリで必要とするorとはまったく異なります。 OpenSSHの「新しい」形式で秘密鍵ファイルを(誤って?)生成(または変換)した場合(デフォルトは7.8以降、その_-o
_、ヘッダー_-----BEGIN OPENSSH PRIVATE KEY----
_付き)、OpenSSL形式に変換できます。 _ssh-keygen -p -m pem [-f file]
_(ただし_-e
_ではない)を使用してパスワードを(おそらく空から、間違いなく空に)変更する。パスワードの入力を求められないようにする場合は、コマンドラインで_-P old
_および_-N new
_を使用できます。
_ssh-keygen -e [-m various]
_は、OpenSSH形式またはseveral他の形式の公開鍵で動作します。特に、公開鍵の_-m pem
_は、PKCS1によって定義され、OpenSSLがずっと昔に使用したRSAのみの形式を意味します。今世紀のOpenSSLは、X.509 "SubjectPublicKeyInfo"によって定義された一般的な形式を使用します。これは rfc 528 およびECDSAの場合は特に便利です rfc 548 、現在RSA DSAで機能しますそして、ECDSAはEd25519ではありませんが、PKCS8は実際にはまったく異なる標準ですが、_ssh-keygen
_が_-m pkcs8
_を奇妙に呼び出します- privateキー。 (OpenSSHの最近のバージョンでは、SSHでのDSAのseを推奨していませんが、現在のところ_ssh-keygen
_は引き続きそのキーをサポートしています。)
相互類似 https://superuser.com/questions/1470852/differences-between-ssh-keygen-private-keys-and-libressls および https://stackoverflow.com/質問/ 55733451/what-is-the-difference-between-rsa-private-key-with-headers-and-openssh-private など
OpenSSH秘密鍵はPEM形式で保存されます。
OpenSSH公開鍵にはPEM形式の鍵が含まれていますが、----- Begin EC Public Key -----ヘッダーとフッターはありません。
OpenSSHキー形式の説明については、この質問を参照してください。 https://superuser.com/questions/1477472/openssh-public-key-file-format