ssh-keygen公開鍵をopenssl PEM_read_bio_RSA_PUBKEY()関数が使用する形式に変換する方法は?

ssh-keygen公開鍵をopenssl PEM_read_bio_RSA_PUBKEY()関数が使用する形式に変換する方法は?

私はopenssl関数で利用可能な公開鍵を生成するのに問題がありますPEM_read_bio_RSA_PUBKEY()。継続エラーが発生します。

ssh-keygen <>.pub明らかに、SSHファイル形式や構造化方法のため、キーファイルにASCII文字列を使用することはできませんSubjectPublicKeyInfo

以下はキー生成コードです。ssh-keygen -t rsa -b 1024 -C "Test Key"

公開鍵の内容をbase64 PEM ASCII文字列形式に変換するPHPコンバータをオンラインで見つけました。しかし、この機能はまだ気に入っていません。

Opensslのドキュメントには次のように記載されています。

  1. 「EVP_PKEY構造を使用して公開鍵を処理するRSA_PUBKEY()関数」
  2. RSA_PUBKEY 関数は RSA 構造を使用して RSA 公開鍵も処理します。

OpenSSH公開鍵をOpenSSL機能が使用する形式に変換するにはどうすればよいですか?

ベストアンサー1

いいね!

だから私は「簡単ですね、わかりました」と思い始めました。知ってみると、私が思ったよりもはるかに多くの意味がありました。

最初の問題は、OpenSSLのマニュアルページによると、man 3 pemOpenSSLはRSAキーがPKCS#1形式であると予想していることです。明らかに、これはssh-keygenが処理するものではありません。 2つのオプションがあります(検索して)。

OpenSSH v. 5.6以上がある場合(私のラップトップにはありません)、次のコマンドを実行できます。

ssh-keygen -f key.pub -e -m pem

より長期的なアプローチは、SSHキーを個別のコンポーネント(ブログエントリ私はそれらのいくつかがOpenSSHが「排他的」であると非難し(私は「固有」と呼ぶことを好む)、ASN1ライブラリを使用してコンテンツを交換することを発見しました。

幸いなことに、誰かがこれを行うコードを書いています。

https://gist.github.com/1024558

おすすめ記事