2014年6月11日水曜日

Apache2 mod_ssl を利用する設定

自己証明書を作成する

Https使ったWebサイトを構築する場合、SSL自己証明書を作成する必要がある。
通常は認証局(シマンテック・ウェブサイトセキュリティやVERISIGNなど)の有料の証明書発行サービスなどから取得する必要があるが、個人のテスト用のWebサーバのためOpenSSLを利用した自己証明書を作成する。

自己証明書を保存先とファイル名

  • /etc/ssl/server.key(秘密鍵として利用、テキストファイルとして利用できる任意の拡張子でも構わない)
  • /etc/ssl/server.crt(証明書(公開鍵)として利用、テキストファイルとして利用できる任意の拡張子でも構わない)

ブラウザでインポートするDERファイルの保存先

  • /usr/local/www/apache22/data/server.der(証明書として利用、テキストファイルとして利用できる任意の拡張子でも構わない)

編集が必要な設定ファイル

  • /usr/local/etc/apache22/httpd.conf
#cd /etc/ssl/⏎ ←自己証明書を保存するディレクトリへ移動
#openssl req -new -x509 -days 3650 -key server.key -out server.crt⏎ ←keyファイルとcrtファイルを作成
↓以下の情報を半角英数で設定する
Country Name (2 letter code) [AU]:⏎ ←国名(日本ならJP)
State or Province Name (full name) [Some-State]:⏎ ←都道府県名(Tokyoなど)
Locality Name (eg, city) []:⏎ ←市名(Minatoなど)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:⏎ ←組織名(ホスト名でも問題なし)
Organizational Unit Name (eg, section) []:⏎ ←部署名(空欄でも問題なし
Common Name (eg, YOUR name) []:⏎ ←共通する名称(ホスト名など)
Email Address []:⏎ ←管理者のメールアドレス
#chmod 400 server.crt⏎ ←server.crtに読み取り専用権限を付与
#openssl x509 -in server.crt -out /usr/local/www/apache22/data/server.der -outform DER⏎ ←後でブラウザで読み込む証明書ファイルを作成
#vi /usr/local/etc/apache22/httpd.conf⏎ ←httpd.confをテキストエディタで開く
#Include etc/apache22/extra/httpd-ssl.conf ←コメントを解除する

Include etc/apache22/extra/httpd-ssl.conf ←保存して閉じる
#vi /usr/local/etc/apache22/extra/httpd-ssl.conf⏎ ←httpd-ssl.confをテキストエディタで開く
ServerName www.example.com:443 ←サーバ名(ホスト名)へ変更

ServerName www.yourhostname.com:443
ServerAdmin you@example.com ←管理者のメールアドレスに変更

ServerAdmin postmaster@yourhostname.com
SSLCertificateFile "/usr/local/etc/apache22/server.crt" ←crtファイルを保存したパスへ変更

SSLCertificateFile "/etc/ssl/server.crt"
SSLCertificateKeyFile "/usr/local/etc/apache22/server.key" ←keyファイルを保存したパスへ変更

SSLCertificateKeyFile "/etc/ssl/server.key" ←ここまで変更したら保存して閉じる
#/usr/local/etc/rc.d/apache22 restart⏎ ←apacheを再起動

keyファイル、crtファイル、derファイルのファイル名は任意でOK。

keyファイル
秘密鍵用に作成、「鍵」にかけて拡張子を「.key」に設定した。
秘密鍵
本人(サーバ)だけが持つ鍵。
公開鍵の暗号化された内容を複合するのに利用する。
テキストファイルの内容が「—–BEGIN RSA PRIVATE KEY—–」からはじまり、「—–END RSA PRIVATE KEY—–」で終るテキスト形式のファイルであればどのような拡張子でもよい。
crtファイル
証明書(公開鍵)用に作成「CERTIFICATE」より、拡張子を「crt」にした。
公開鍵
データをWebサーバに送信する際に暗号化する野に利用する。
テキストファイルの内容が「—–BEGIN CERTIFICATE —–」からはじまり、「—–END CERTIFICATE—–」で終るテキスト形式のファイルであればどのような拡張子でもよい。
derファイル
「Distinguished Encoding Rules」でバイナリ符号化したファイル。
証明書をブラウザにインポートするためのファイルの一つで、ほかに「BER」、「CER」などのフォーマットでバイナリ符号化したファイルもある。
今回はcrtファイルをDERフォーマットで符号化した。

ブラウザで証明書のインポートをする

ブラウザ(IEなど)で「http://www.ドメイン名/server.der」にアクセスして証明書をインポートする。
以下の点に注意する。

証明書ストアについて

  • 「証明書をすべて次のストアに配置する」チェック
  • 「参照」ボタンをクリック

証明書ストアの選択画面について

  • 「信頼されたルート証明機関」を選択して「OK」ボタンをクリック

 

SSLのパスフレーズ(Pass Phrase Dialog)の入力を省略する設定

以下のページを参考に設定してみた。
パスワードの自動応答スクリプトを作成して「httpd-ssl.conf」を変更する。

SSLのパスフレーズ(Pass Phrase Dialog)入力を省略してApacheを起動する - CentOS & Fedoraテクニック

作成するシェルスクリプト

  • /etc/ssl/pass_phrase.sh

変更するファイル

  • /usr/local/etc/apache22/extra/httpd-ssl.conf
#vi /etc/ssl/pass_phrase.sh⏎ ←pass_phrase.shをテキストエディタで新規作成
#!/bin/sh ←スクリプトを実行するプログラムをシェルスクリプトを利用する宣言
echo "sslで入力するパスフレーズ" ←shhを実行する際に入力するパスフレーズを追加し保存
#chmod 500 /etc/ssl/pass_phrase.sh⏎ ←pass_phrase.shに実行権限を付与
#vi /usr/local/etc/apache22/extra/httpd-ssl.conf⏎ ←httpd-ssl.confをテキストエディタで開く
SSLPassPhraseDialog  builtin ←SSLPassPhraseDialogを下記へ変更

SSLPassPhraseDialog  /etc/ssl/pass_phrase.sh ←ここまで変更したら保存して閉じる
#usr/local/etc/rc.d/apache22 restart ←apacheを再起動する
Performing sanity check on apache22 configuration:
Syntax OK
Stopping apache22.
Waiting for PIDS: 1135.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.

表示は様々だが途中でパスフレーズを入力するメッセージが表示せずapacheが起動できていればOK

シェルスクリプトのファイル名や保存場所は任意で指定可能。
sslの設定ファイルのファイル名や保存場所は利用環境によって違うのでインストールの際に控えておくか設定ファイルを保存する際に入れるディレクトリをあらかじめ決めておくなどするとよい。

0 件のコメント :

コメントを投稿

ご質問などあればこちらへどうぞ