OpenSSLのコマンドラインプログラムの使い方

文:Vincent Danen(TechRepublic) 翻訳校正:石橋啓一郎
2008-05-30 08:00:00
  • このエントリーをはてなブックマークに追加

 OpenSSLは単なるオープンソースのSSLライブラリの実装ではない。OpenSSLでは証明書の作成、要求、署名、取り消しを行える他、ファイルのハッシュ値の作成などの暗号処理や、SSLコネクションのテストなどさまざまなことが可能だ。今回の記事では、コマンドラインプログラムであるopensslで行える興味深い操作について見てみることにする。

 メールサーバーへのSSLコネクションをテストするには、s_clientパラメタを使ってopensslコマンドを実行すればよい。

$ openssl s_client -connect smtp.myhost.com:25 -starttls smtp

 これは基本的に、smtp.myhost.comのポート25番に対し、STARTTLSを使ってtelnetに似たコネクションをオープンするものだ。これは双方向型のセッションなので、リモートのSMTPサーバにコマンドを送る、使われている証明書を見る、SSLセッションの詳細を見るなどの操作やその他の操作も行うことができる。SMTP over SSLをテストする場合には、-starttlsオプションを使わない。

$ openssl s_client -connect smtp.myhost.com:465

 上記の例は、SSLを使うどんなサービスにでも利用することができる。そのようなサービスの例には、HTTPS(ポート443)、POP3 over SSL(ポート995)などがある。

 opensslコマンドは、ファイルのメッセージダイジェストを作成するためにも使うことができ、これを利用してファイルが改ざんされていないかを検証できる。

$ echo "test file"> foo.txt

$ openssl dgst -md5 foo.txt

MD5(foo.txt)= b05403212c66bdc8ccc597fedf6cd5fe

$ openssl dgst -sha1 foo.txt

SHA1(foo.txt)= 0181d93fee60b818e3f92e470ea97a2aff4ca56a

 利用できるその他のメッセージダイジェストアルゴリズムを知りたければ、openssl list-message-digest-commandsの出力を見ればよい。

 opensslコマンドを使ってファイルを暗号化することもできる。利用できる暗号化アルゴリズムのリストを見るには、openssl list-cipher-commandsを使う。利用する暗号アルゴリズムを選んだら、次のようなコマンドでファイルを暗号化できる。

$ openssl enc -aes-256-cbc -salt -in foo.txt -out foo.enc

enter aes-256-cbc encryption password:

Verifying - enter aes-256-cbc encryption password:

$ file foo.enc

foo.enc: data

$ cat foo.enc

Salted__yvi{!e????i"Yt?;(? e%
$ openssl enc -d -aes-256-cbc -in foo.enc

enter aes-256-cbc decryption password:

test file

 上記の例では、ファイルfoo.txtは256ビットのAESでCBCモードを使って暗号化され、暗号化された情報はファイルfoo.encに保存される。出力ファイルを見ると、完全に解読不能になっていることがわかる。ファイルの復号化は-dオプションで行うが、パスワードだけでなく使った暗号アルゴリズムも覚えておく必要があることに注意して欲しい。

 以上のとおり、OpenSSLは他のアプリケーションが利用するライブラリ以外のものも提供しており、コマンドラインのopenssl命令は、それ自体で多くの使い道がある強力なプログラムだ。

この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ

  • 新着記事
  • 特集
  • ブログ