2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2キーペアに登録されているキーのフィンガープリントについて確認してみる

Last updated at Posted at 2023-02-23

EC2でインスタンスを構築する時は、キーペアに登録されている公開鍵を選択します。

EC2のマネジメントコンソール画面にはフィンガープリントが表示されており、本記事では表示されているフィンガープリントがファイルから計算するフィンガープリントとどう関係しているか確認してみます。

ドキュメント

今回確認する事

EC2 キーペアのマネジメントコンソールに表示されるフィンガープリントについて。
下記2通りで用意したキーのフィンガープリントを確認します。

  • マネジメントコンソールの キーペアを作成 から作成したキー
  • マネジメントコンソールの アクション => キーペアをインポート からインポートしたキー

なぜ手法ごとに確認するかといえば、AWSドキュメントのフィンガープリントの計算方法に下記のようにまとめられています。

image.png
フィンガープリントの計算方法より引用

表にあるように、RSAキーペアの場合。
キーを用意する手法によってフィンガープリントの計算方法が代わり値がかわります。

このためそれぞれの手法で用意したキーについて、それぞれ方法で取得したフィンガープリントを確認します。

余談

EC2のキーペアに表示されるフィンガープリントについて。
RSAの場合、AWS上で生成した場合と、インポートした場合で結果が変わってくるので。

AWS側で生成したRSAキーペアを、別リージョンで利用したい場合。
別リージョンのキーペア画面から公開鍵をインポートして利用することになりますが。

AWS側で生成したRSAキーとインポートしたRSAキーではフィンガープリントの計算で利用するハッシュ関数が違うので表示が変わります。

これは知らないとちょっと驚く挙動かと思います。

今回実行する環境

本手順でフィンガープリントを確認するためにはssh-keygenopensslが必要となります。

最近のWindows 10やWindows 11ならばOepnSSHはデフォルトでインストールされていると思いますが。
OpenSSLについては適宜インストールしておいて下さい。
(もしくはドキュメントにあるように、WSLで確認)

また今回実行する環境はPowerShellではなくコマンドプロンプトで実行してください。

2023年2月現在、PowreShell上でopensslの結果をパイプするとまずいことがあり、異なるフィンガープリントが表示されてしまいます。

この現象については下記ページが詳しいので勉強になります。

AWS のキーのフィンガープリントが実行環境によって違う話

Amazon EC2 によって作成されたキーペアについて確認する

今回、確認用に下記2つのキーをマネジメントコンソールのキーペアを作成から作成しました。

image.png

Name Type Fingerprint
qiita-rsa rsa 8d:c1:49:18:b3:b0:dd:6d:de:f5:73:16:00:ec:6d:10:75:60:a8:43
qiita-ed25519 ed25519 aDxDMPGCAtcdh5W0hDgyhaNLtF0yhng+lG+KodwyJYw=

この2つのキーについては、Amazon EC2 によって作成されたキーペアとなり。

  • qiita-rsa は rsa で sha-1
  • qiita-ed25519 は ed25519 で SHA-256

で計算されたフィンガープリントがコンソールに表示されています。

作成時にダウンロードしたキーについては、今回c:\qiita\key\に格納しています。

プライベートキーからフィンガープリントを生成する

上記ドキュメントでは、キー生成時にダウンロードできる秘密鍵から公開鍵を取り出し、公開鍵のハッシュを取得する方法を紹介しているため、こちらをつかって確認します。

コマンドプロンプト
rem ###qita-rsa.pemのフィンガープリントを表示###
openssl pkcs8 -in qiita-rsa.pem -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

rem ###qiita-ed25519.pemのフィンガープリントを表示###
ssh-keygen -l -f qiita-ed25519.pem

image.png

コマンドを実行すると上記画像の赤線部分にフィンガープリントが表示されます。

マネジメントコンソール上で表示されているフィンガープリントとも一致しており、キーペアについて確認する事ができました。

なお、qiita-ed25519.pemについては、ブラウザからダウンロードしたファイルをそのまま利用しており、画像ではパーミッション警告が出ています。

最初パーミッション警告が出ていたので、ファイルのセキュリティから継承を切って不要なアクセス権限を外そうかと思いましたが、警告のあとにフィンガープリントが表示されていたので今回はそのままとしています。

Amazon EC2 にインポートされたキーについて確認してみる(RSAのみ)

ブラウザからダウンロードした秘密鍵(qiita-rsa.pem qiita-ed25519.pem)から公開鍵を取り出して、取り出したファイルをAWS EC2にインポートしてみます。

パブリックキーマテリアルを取得する

上記ドキュメントにキー登録されている公開鍵を取得する手法がいくつか記載されていますが、今回はFrom the privae keyで紹介されている方法で公開鍵を取得します。

マネジメントコンソールからダウンロードしたファイルに対して、ssh-keygenコマンドを実行するとパーミッションエラーがでる場合は、ファイルのセキュリティから継承の無効化をして自分だけの権限をいい感じにつけて下さい。

image.png

image.png

上記画像の用に不要なユーザー(AdministratorsだったりSYSTEMだったり余計な権限を外していい感じにする)

パーミッションをいい感じした後に、コマンドを実行すると公開鍵が表示されるので、表示された内容をそれぞれマネジメントコンソールからインポートします。

コマンドを実行して公開鍵を表示

image.png

マネジメントコンソールのキーペア画面から アクション => キーペアをインポート を選択

image.png

qiita-rsa-from-private-key

image.png

qiita-ed25519-from-private-key

image.png

キーペアがインポートされました。

image.png

Name Type Fingerprint
qiita-rsa-from-private-key rsa 50:6a:ee:f4:cd:32:ec:09:30:2c:ff:a4:79:21:dd:c7
qiita-ed25519-from-private-key ed25519 aDxDMPGCAtcdh5W0hDgyhaNLtF0yhng+lG+KodwyJYw=

インポートされたフィンガープリント と AWSが生成したキーのフィンガープリントを比較すると。

ed25519の鍵の方はフィンガープリントが変化していない事がわかりますが。

rsaの方はインポートした事により、フィンガープリントの計算に利用するハッシュ関数が sha1 から MD5 に変わって、フィンガープリントも変わっている事が確認できます。

ここではインポートで変更されたrsaのフィンガープリントについて確認してみます。

先程、コマンドでインポートした公開鍵を下記コマンドでqiita-rsa-from-private-keyに出力します。

この公開鍵について確認してみます。

コマンドプロンプト
rem 秘密から公開鍵を取り出す
ssh-keygen -y -f qiita-rsa.pem>qiita-rsa-from-private-key

rem 取り出した公開鍵をPEM形式して、それをDER形式にしてmd5で計算
ssh-keygen -f qiita-rsa-from-private-key -e -m PEM | openssl rsa -RSAPublicKey_in -inform PEM -outform DER | openssl md5 -c

image.png

取得できるフィンガープリントを確認すると、マネジメントコンソールに表示されている50:6a:ee:f4:cd:32:ec:09:30:2c:ff:a4:79:21:dd:c7と一致している事が確認できます。

なおドキュメントにはもっと単純に下記のように秘密鍵から公開鍵を取り出して確認するコマンドが記載されています。

コマンドプロンプト
openssl rsa -in qiita-rsa.pem -pubout -outform DER | openssl md5 -c

image.png

ed25519の場合はフィンガープリントは生成手法によってかわらない

何度も出てきていますが、ed25519についてはAWS側で生成しても、インポートしてもフィンガープリントの計算方法が変わらないので一致している事が確認できれば終了。

image.png

総評

鍵の棚卸しする際はフィンガープリントで確認しますが。
下記の点は意識しておくとよいかと思います。

  • rsaではAWS側で生成した時とインポートした時では計算に利用するハッシュ関数が変わってフィンガープリントが変わる
  • Win32OpenSSLを使う場合は、2023年2月現在のPowerShellで実行するとパイプ処理でまずいのでコマンドプロンプトを利用する
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?