21
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

RSA鍵のフォーマットを作って見て変換して体験実習しみた

環境

  • 鍵作りに使ったもの
    • ssh-keygen : Macにあるもの
    • Puttygen : Release 0.70
    • TeraTerm : Version 4.96
  • クライアント側のOS
    • macOS Soerra Version 10.12.6
    • Windows10 Pro 64bit
  • サーバ側のOS : CentOS7
    • Macの中のVirtualBoxにいます

鍵を作る方法

鍵のフォーマット

PEM形式

  • 特徴1. -----BEGIN xxxxxxxxxxxx -----って書いてある
  • 特徴2. 拡張子が.pemってなってることがある
  • :loudspeaker:鍵の末尾に「=」がつくことがある
    • Base64でエンコードしているので変換で余った部分に「=」が使われる
    • Base64 - Wikipedia
  • この形式を必要とするもの
    • SECSH形式の公開鍵と秘密鍵
    • OpenSSH形式の公開鍵

.DERと同じASN.1のバイナリデータをBase64によってテキスト化されたファイルです。
ファイルの先頭に -- BEGIN... という行があるのをみたら「PEMだな」と思えば良いです。
opensslコマンドのデフォルトのエンコーディングなので、たとえば何も指定せずに鍵を生成すると PEM形式のファイルが作られます。
RSA鍵、証明書のファイルフォーマットについて - Qiita

SECSH形式(ssh.com)

  • 特徴1. 公開鍵は、---- BEGIN SSH2 PUBLIC KEY ----って書いてある
    • Puttygenにおいて特に設定無しで出力すると拡張子は.pubになる
  • 特徴2. 秘密鍵は、---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----って書いてある
Puttygen製公開鍵
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "{コメント}"
AAAA{最初の行}
{改行あり文字列}
---- END SSH2 PUBLIC KEY ----

OpenSSH形式

  • 特徴1. 公開鍵は、ssh-rsaで始まって全体が1行になっている
    • TeraTermにおいて特に設定無しで出力すると拡張子は.pubになる
  • 特徴2. 秘密鍵は、-----BEGIN RSA PRIVATE KEY-----って書いてある
  • この形式を必要とするもの
    • Tera Term
ssh-keygen製公開鍵
ssh-rsa AAAA{改行なし文字列} {ユーザ名}@{PC名}
TeraTerm製公開鍵
ssh-rsa AAAA{改行なし文字列} {ユーザ名}@{PC名}
Puttygen製の鍵をssh-keygenで変換した公開鍵
ssh-rsa AAAA{改行なし文字列}
ssh-keygen製秘密鍵
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,8B5E34DBBBC0801DDDC2A5A241775435

{改行あり文字列}
-----END RSA PRIVATE KEY-----
TeraTerm製秘密鍵
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,7C930B26ED8CEE374948185658236DAC

{改行あり文字列}
-----END RSA PRIVATE KEY-----
Puttygen製の鍵をPuttygenでOpenSSH形式に変換した秘密鍵
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F3C7A665262E1B0D

{改行あり文字列}
-----END RSA PRIVATE KEY-----

Putty形式

  • 特徴1. 秘密鍵の拡張子は、.ppk
  • 特徴2. :loudspeaker:この形式の公開鍵はない
  • 特徴3. 秘密鍵は、PuTTY-User-Key-File-2: ssh-rsaって書いてある
  • この形式を必要とするもの
    • Putty
    • WinSCP
Puttygen製秘密鍵
PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: {コメント}
Public-Lines: 6
AAAA{最初の行}
{改行あり文字列}
Private-Lines: 14
{改行あり文字列}
Private-MAC: 811871db936602fd5c01593aa7273dcc79eab6e2

鍵のフォーマットを説明しているサイト集

鍵のフォーマットを変換する方法

ssh-keygenを利用する
Putty形式/SECS形式 > OpenSSH形式
$ ssh-keygen -i -f {公開鍵}.pub > authorized_keys

OpenSSH形式 > SECS形式
$ ssh-keygen -f {公開鍵} -e -m pem
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
21
Help us understand the problem. What are the problem?