simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

AWS:AMIの作り方3-OpenSSLでX.509 証明書

Amazon のマシンイメージ作りたいだけなんだよ、なんで IAM とか SSL の話ばっかりになるんだよもう

X.509 証明書ってなんですか
なんで 509 なの?
なんで X. なの?

ITU という国際機関が定めたデジタル証明書の標準仕様
X.509は仕様の管理番号とみる
今日ではRFC 5280だそうだ(Request for Commentの5280の仕様を満たす証明システム)

現在ではバージョン3が使用されている
公開鍵とその公開鍵の持ち主の対応関係を保証するための電子署名として機能

CAによって割り当てられた正の整数
発行者が証明書に署名する際に用いるアルゴリズムハッシュ関数MD5SHA-1、SHA-2など。署名アルゴリズムRSA、DSA、ECDSAなど)

OpenSSL と X.509 証明書の関係は?
SSLはセキュアなソケットレイヤーのことで、公開鍵を使った暗号化基盤 PKI を提供するソフトウェアライブラリとして OpenSSL がある
OpenSSL は X.509 はもちろん、SSL に関する機能を提供してくれるとみた(つか X.509 または RFC5280の仕様以外のデジタル署名機能を OpenSSLはサポートしているのか?知らん )

コマンドラインツールとして無料で入手可能で、パスを通しておけばコマンドから適当な秘密鍵を作ったり、その秘密鍵から公開鍵を作ったりできる

よーし、じゃ OpenSSL をダウンロードしてコマンドを使えるようにして
RSA アルゴリズム秘密鍵、公開鍵をコマンドから作る書式を確認してファイル作ればそれが X.509 証明書ってことでいい?

Open SSL 入手先
https://www.openssl.org/

The 1.0.2 series is our Long Term Support (LTS) release, supported until 31st December 2019. とのことで、1.0.2 を手に入れてみた
Windows で動くバイナリ入っているのかなこれ?

入っていない
OpenSSLのソースファイルのみが配布されている。そこからWindows用にコンパイルするのは(開発者でない限り)ハードルが高い
じゃあ
「Shining Light Productions」ここから Windows 版を入手する
Shining Light Productions - Win32 OpenSSL

あれ?
1.1.0 の新しい OpenSSL のインストーラがある
以下の手順を参考に openSSL コマンドを利用できるようにパスまで通しました。
www.atmarkit.co.jp

今は openssl コマンドを打てます。
そこで、次のAWS の公式ドキュメントの説明の通り X.509 証明書を自己署名で 365 日期限で作ってみました。
docs.aws.amazon.com

あれ?
IAMのユーザーごとに設定できる認証情報には SSH 公開鍵のアップロードとあるけど
X.509 証明書と SSH 公開鍵って同一のみなせるのだっけ?


>X.509 証明書に記述された公開鍵

なるほど、同一か
証明書の中身をユーザーの認証情報に貼り付けておくことにした

あ、れ?
無効な SSH publick key だってさ

以下を参考に、手順を洗います。(エラー去ってまたエラー)
docs.aws.amazon.com

ふっふっふ。
なんと自己署名の手順を踏む必要なかったみたいですね。

openssl の以下のコマンドで作った publickey を IAM ユーザーの SSL 公開鍵として登録することに成功しました。

openssl rsa -pubout < privatekey.pem > publickey.pem

具体的には publickey.pem のファイルの中身をテキストコピーして、コンソール画面から貼り付けるだけ
これで invalid publick key のエラーが出ないことを確認しました。

この IAM ユーザーが SSL 通信する際は、元となる秘密鍵があればうまくいくはずです。(たぶん)

これで X.509 証明書をユーザーに設定する作業も完了だぜ(実際はただの公開鍵でしたが…周辺知識も少しは埋まったってもんだ)
IAM作成のための手順は次に進みます。