Apache+SSLの設定(Win版 Apache+OpenSSL)


こんばんは。中小零細企業のIT経営をお手伝いしているIT経営コンサルタントの川上です。

以前、別ブログで備忘録に書いた記事の転載です。
少し古い内容ですが、基本的な流れは大差ないだろうという…

久しぶりにApacheをインストールしたら色々と細かい設定を度忘れしていたので今後のためにメモ。
AN HTTPDが簡単すぎてついつい手抜きしちゃう今日この頃。
CGIとかグループウェアとかを動かそうとすると微妙に動作がアレなのでまじめにApacheをインストールすることに。業務用のサーバなのでついでにSSLの設定も。


■まずは Apache のサイト(http://httpd.apache.org/)でApache を入手。
英語サイトだけど気にせず Download から Apache2.2.17 の Win32 Binary版をダウンロード。
今回はSSLの利用が目的なのでOpenSSL 付の方をダウンロード。

証明書は以前、AN HTTPD + Stone で作った奴を使いまわしするけど、OpneSSL付だと、デフォルトでSSLの設定がされてるみたいなんで手抜きw

 

■ Apache をインストール
インストールが終わったら適宜 httpd.conf を修正。
DocumentRoot とかディレクティブのOptionsとかAddHandlerとかとかを適宜修正。
ひとまず Apache を再起動してサイトにアクセスできるか確認。■ 問題なくアクセスできたら続いてSSLの設定。
httpd.conf の
#LoadModule ssl_module modules/mod_ssl.so

#Include conf/extra/httpd-ssl.conf
のコメントタグを外して有効にします。次に httpd-ssl.conf の DocumentRoot を修正し、続いて
#SSLCertificateFile “C:/Apache2.2/conf/server.crt”

#SSLCertificateKeyFile “C:/Apache2.2/conf/server.key”
のコメントタグを外して有効にします。ここで Apache を再起動するとエラーで起動できないので、証明書と秘密鍵のインストールを行います。
初期設定が conf ディレクトリの下に証明書と秘密鍵を保存するようになってるので、conf ディレクトリに証明書と秘密鍵をインストール(ファイルをコピー)します。
別の場所に証明書と秘密鍵を保存したい場合は httpd-ssl.conf を適宜修正します。証明書と秘密鍵のインストールが終わったら Apache を再起動します。
エラーなく再起動できたら、https でサイトにアクセスしてみませう。
https で正常にアクセスできたら完了です。ちなみに、自己証明書を利用している場合は証明書エラーが出ますが、動作的には正常です。
商用に使う場合とか不特定多数に公開するサイトの場合はベリサインとかでちゃんとした証明書を買いましょう。
最近は年間数千円程度の安い証明書発行サイトもありますので、個人サイトやSOHOレベルならそういうのを使うのも手。■ AN HTTPD + Stone を構築したときはメモを残してなかったので、ついでにOpenSSLを利用した秘密鍵と証明書の作成方法もメモ。

OpenSSLを単体で入手するときは Shining Light Productions (http://www.slproweb.com/)からWindowsバイナリ版のOpenSSLをダウンロードし、インストーラに従って任意の場所にインストール。
binフィルダ内の openssl.exe を実行。(マウスからダブルクリックでOK)
Apache+OpenSSL をインストールした場合も、Apache の bin フォルダ内に
openssl.exe がいるので、それを実行。

1.秘密鍵の作成
req -new -nodes -keyout server.key と入力してエンターキー。
色々聞かれるので適宜入力。

Country Name 国コードを2文字で入力(JP)
State or Province Name 県の名前を入力
Locality Name 市の名前を入力
Organization Name 組織の名称を入力
Organizational Unit Name セクション名を入力(省略可)
Common Name サーバーの名前(有効なDNS名)を入力(www.kagato-system.com)
Email Address 電子メールアドレスを入力 

2.証明書の作成
引き続きopenssl.exe上で
OpenSSL> req -new -x509 -key server.key -out server.crt -days 365
と入力。
365は有効期限なので、適当な数字を入力。

bin フォルダに作成された
server.key
server.crt
を conf フォルダにコピーして Apache を再起動。
httpsでアクセスできれば作業完了。