VineLinuxパフォーマンスアッププロジェクト:0158

■SSL通信を実装してみよう!(1)■

 SSL(Secure Socket Layer)とはインターネット上でやりとりされる情報を暗号化して通信させるための技術です。これを使えば個人情報等をやりとりする時でもある程度安全性が確保され、現在多くのWebサーバで導入されています。
 今回はこのSSL通信を実現するための機能をApacheに追加する方法を画像を交えながら2回に分けて紹介します。

※以下の作業はすべてrootユーザ権限で行ってください。

●mod_sslとopensslのインストール

 SSL通信をApacheで行うためにはApache本体に加えてmod_sslパッケージをインストールする必要があります。インストールされていない場合はapt-getコマンド

  apt-get install mod_ssl-apache2

やSyanpticなどで入手してインストールを完了してください。

 また、証明書作成時にopensslも利用しますのであらかじめインストールされているかどうか確認してなければ同じく上記の方法で利用できるようにしておいてください。

●サーバ用の秘密かぎ作成

 SSLは公開かぎ暗号方式の技術を利用しているため、公開かぎと秘密かぎを作成しなくてはなりません。まずはサーバ用の秘密かぎを作成します。

 最初にかぎの置き場所である以下のディレクトリへ移動します。

  cd /usr/share/ssl/certs

 ここでmakeコマンドを利用して以下のファイル名で秘密かぎを作成します。

  make server.key

 すると以下のようにズラズラ出てきますので、青字に沿って入力してください。

umask 77 ; \
/usr/bin/openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
.......................++++++
.++++++
e is 65537 (0x10001)
Enter pass phrase: ←ここで第3者に見破られにくい好きなパスワードを入力する(※入力したパスワードは表示されません)
Verifying - Enter pass phrase: ←もう1度上で入力したパスワードを入力する(※入力したパスワードは表示されません)


 このままではかぎを設定した影響でApacheを起動する時に入力したパスワードを要求されますので、これを要求されないようにするために先ほど作成した秘密かぎからそのパスワードを削除します。
 以下のコマンドを入力して取り除いてください。ただし、取り除く時にかぎを作成する際に入力したパスワードを再度入力する必要があります。

  openssl rsa -in server.key -out server.key

Enter pass phrase for server.key: ←ここでかぎを作成する際に入力したパスワードを再度入力する(※入力したパスワードは表示されません)
writing RSA key

 これで秘密かぎを作成することができました。

●サーバ用の公開かぎ作成

 今度は公開かぎを作成します。同じく/usr/share/ssl/certs以下に移動してmakeコマンドで以下のファイル名としてかぎを作成します。

  make server.csr

 すると以下のようにズラズラ出てきますので、赤字に沿って入力してください。

umask 77 ; \
/usr/bin/openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP ←国名(JP)を入力する
State or Province Name (full name) [Some-State]:Aichi ←お住まいの都道府県を入力する
Locality Name (eg, city) []:Chita ←お住まいの市区町村を入力する
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mkserver ←サーバ名を入力する(どんな名前でもかまいません)
Organizational Unit Name (eg, section) []: ←部署名を入力(なければEnterキーを押す)
Common Name (eg, YOUR name) []:mkserver.dip.jp ←ホスト名を入力する
Email Address []:webmaster@abc.jp ←サーバ管理者(または証明書管理者)のメールアドレスを入力する

Please enter the following 'extra' attributes to be sent with your certificate request
A challenge password []: ←Enterキーを押す(チャレンジ・レスポンス方式を利用する場合はここにチャレンジパスワードを入力する)
An optional company name []: ←Enterキーを押す(会社名の略称等があったらここに入力する)

 これで公開かぎを作成することができました。

●証明書作成と権限設定

 そして最後に2つのかぎを利用して証明書を作成します。ディレクトリは移動せずにopensslコマンドを利用して

  openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365

と入力してください。すると今まで設定した内容が以下のように表示されますので確認してください。

Signature ok
subject=/C=JP/ST=Aichi/L=Chita/O=mkserver/CN=mkserver.dip.jp/emailAddress=webmaster@abc.jp
Getting Private key

 さらに作成された証明書などに対してrootユーザのみ参照できるように権限を設定します。

  chmod 400 server.*

 これでサーバ証明書が完成しました。



 この後、ApacheのSSL設定ファイルであるssl.confを編集して実際にSSL通信を実行することになります。

SSL通信を実装してみよう!(2)へ続く





プロジェクト ホームへ戻る