SSH秘密鍵=SSL鍵。
ssh-keygen -t rsa で鍵発行済み鍵は、SSL用の2048-bit RSA 秘密鍵となる。
SSL秘密鍵からSSH公開鍵を生成するには
ssh-keygen -f ssl_private_key_file -y > ssh.pub
SSH秘密鍵からSSL公開鍵を生成するには
openssl rsa -in ssh_private_key_file -pubout -out ssl.pub
■秘密鍵が無い場合
SSH公開鍵か、SSL certだけが有る場合は、より困難になる。
SSL certから、SSL公開鍵を抽出し、SSLと SSH公開鍵との交換が出来なけ
ればならない。
SSL certから、SSL公開鍵を抽出するには
openssl x509 -in cert_file -pubkey -noout > ssl.pub
第二段階は、より複雑。Debianでは以下の通り。
apt-get install lsh-utils
ssh-conv < ssh.pub | sexp-conv
もし、ssl.pub とssh.pubが同じ鍵を参照するなら、
かに相互変換可能な事が分かるだろう。
ssh-conv < ssh.pub | sexp-conv -s hex
openssl rsa -in ssl.pub -pubin -noout -text
スクリプト
sed -e'1d' -e'$d' < /tmp/test.pub | \
pkcs1-conv --public-key-info --base-64 | \
sexp-conv | \
sed -e'1s/(rsa/(rsa-pkcs1-sha1/' | \
sexp-conv -s transport
上記の出力は、次と同一である。
ssh-conv < ssh.pub | sexp-conv -s transport
而して、変換可能になった。フルパイプラインは
sed -e'1d' -e'$d' \< ssl.pub | \
pkcs1-conv --public-key-info --base-64 | \
sexp-conv | \
sed -e'1s/(rsa/(rsa-pkcs1-sha1/' | \
sexp-conv -s transport | \
lsh-export-key --openssh > newssh.pub
備考
上記はRSA鍵のみ。DSA鍵には使えない。
また、悪い鍵に対する公開テストで、1024-bit RSA keyには使えない事が分かっ
ている。
Debian "etch"システムで、レタータイプの鍵をつかっていたら、
鍵を、2048-bit RSA に変えたほうが良い。
------------------------------
元ネタ
Converting keys between SSH and SSL (Mast Kalandar 2008/05/15)
Howto: Convert an OpenSSL key to a public/private OpenSSH key-pair (.bootstrap 2009/04/11)
How can I use the same key for SSH and SSL (https) (serverfault.com 2010/02/18)
Convert keys between GnuPG, OpenSsh and OpenSSL (Sysmic.org 2010/03/24)
PKCS8秘密鍵→SSH2公開鍵変換ツール (kurushima @ 自堕落な技術者のヰキ(公開版))
> PKCS#8 RSA 秘密鍵(PINの無いもの)のPEM型式から
> SSH2公開鍵に変換したものをファイル出力するツールです。
//
No comments:
Post a Comment