読者です 読者をやめる 読者になる 読者になる

黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

opensslコマンドと戯れる

Linux openssl

LPIC303のお勉強しますよ

どうにも記事でも書かないと続かないので、備忘録がてら残しておく。
LPIC303,304は認定教材も少なくて(ない?)情報もあまりない上、受験料が30,000yenであることから、個人的には簡単に受験できるような試験ではない。
なので、可能な限りお勉強してから挑むことにする。目標は今年中。。。

学習に使う教材は、現状一択の模様。

徹底攻略LPI問題集Level3[303/304]対応 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略LPI問題集Level3[303/304]対応 (ITプロ/ITエンジニアのための徹底攻略)


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証明書データ管理

サブコマンドの表を作っただけでわからないところが溢れるので、ググる

  • X.509
    • 公開鍵証明書や失効リスト(CRL)の標準仕様
  • CSR

各サブコマンドについて、詳細やオプションについて具体例を交えながら記載していく。

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

コマンドを実行すると鍵の所有者情報の入力を求められるので、国などを入力していく。

ちなみに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とかも含むので、そっちも勉強しなきゃ。。。


謝辞

opensslでRSA暗号と遊ぶ