opensslコマンドと戯れる
LPIC303のお勉強しますよ
どうにも記事でも書かないと続かないので、備忘録がてら残しておく。
LPIC303,304は認定教材も少なくて(ない?)情報もあまりない上、受験料が30,000yenであることから、個人的には簡単に受験できるような試験ではない。
なので、可能な限りお勉強してから挑むことにする。目標は今年中。。。
学習に使う教材は、現状一択の模様。
徹底攻略LPI問題集Level3[303/304]対応 (ITプロ/ITエンジニアのための徹底攻略)
- 作者: 金沢泳義,菖蒲淳司,森嶋秀樹,ソキウス・ジャパン
- 出版社/メーカー: インプレスジャパン
- 発売日: 2012/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
OpenSSLとは
OpenSSLはオープンソースで開発されているSSLの実装。
最近は大きな脆弱性が立て続けに見つかって、システム管理をなさっている方の精神を磨り減らした模様。
SSLライブラリやCryptライブラリ等、依存しているパッケージは数知れない(たぶん)。
LPIC 303では、主題320「暗号化」の320.1.OpenSSLとして出題範囲に指定されており、重要度は4と定義されている。
コマンド
openssl
コマンドの書式は以下の通り。
$ openssl <サブコマンド> <オプション> $ openssl <オプション>
主なサブコマンドとオプションは以下の通り。
サブコマンド | 説明 |
---|---|
ca | CA(認証局)の証明書を管理 |
dgst | メッセージダイジェストを計算 |
genrsa | RSA秘密鍵を生成 |
req | X.509のCSRを管理 |
rsa | RSA鍵を管理 |
s_client | SSL/TLSプロトコルを使用して指定サーバに接続 |
s_server | SSL/TLSプロトコルを使用してデータを受信するサーバとして動作 |
x509 | X.509証明書データ管理 |
サブコマンドの表を作っただけでわからないところが溢れるので、ググる。
各サブコマンドについて、詳細やオプションについて具体例を交えながら記載していく。
genrsa
サブコマンド
genrsa
サブコマンドのオプションは以下の通り。
オプション | 説明 |
---|---|
-out file | 生成するRSA秘密鍵を出力するファイルを指定。指定が無い場合は標準出力に出力する |
-rand file | 秘密鍵をランダムに生成するためのファイルを指定(どんなファイルでもよさげ) |
-des | 暗号化にDESを使用 |
-des3 | 暗号化にTripleDESを使用 |
-idea | 暗号化にIDEAを使用 |
ビット数 | 生成する秘密鍵の鍵長を指定。デフォルトだと512だそうだけど、2048安定 |
とりあえずRSA秘密鍵を生成したい場合は以下のコマンドでOK。
カレントディレクトリ鍵長2048bitのtest.key
という名前で秘密鍵が生成される。
$ openssl genrsa -out test.key 2048
RSAとか鍵長とか当たり前のように書いているけど一応まとめておく。
- RSA
- 鍵長
- 鍵が取り得る長さのこと。これが長ければ長いほど暗号化時の計算が複雑になり、安全度が増す。 512bitや1024bitはもう安全じゃないからやめてね、という告知がMicrosoftらから発表されている。
- des,des3,idea
dgst
サブコマンド
ちょっと使いどころがわからないけど、とりあえず電子署名を作成できる。
$ openssl dgst -sha256 -sign private.key -out private.dat test.txt
上記のコマンドは、test.txt
ファイルのsha256値の署名を作成します。
これ何に使うんだろ。。。
req
サブコマンド
まずはオプション一覧を。
オプション | 説明 |
---|---|
-days <日数> | 証明書の有効期限を指定 |
-key <ファイル> | 秘密鍵ファイルを指定 |
-new | 新規のCSRを作成 |
-out <ファイル> | CSRの出力ファイルを指定 |
色々なサイトや書籍で説明がまちまちで困った。
とりあえずCSRの作成自体は以下のように。
$ openssl req -new -key private.key -out private.csr
コマンドを実行すると鍵の所有者情報の入力を求められるので、国などを入力していく。
$ openssl req -new -x509 -key private.key -out oreore.crt -days 365
上記のように実行すればいけまっす。
rsa
サブコマンド
秘密鍵は既にできているので、公開鍵を作る。
$ openssl rsa -pubout -in private.key -out public.key
所感
ここで力つきた。
openssl
コマンド、色々詰め込みすぎじゃないですかねぇ。。。
LPIC的には暗号化はGPGとかも含むので、そっちも勉強しなきゃ。。。