ちょっと単純にhttpsを使いたいというより、別の目的のためにhttpsが必要になったので、
mod_sslを利用して、httpsを実現しようと思います。
前提として、yumでhttpdが入っていて、正常に動作すること。とします。
まずは、mod_sslをyumでインストールします。
※opensslがないようなら、別途インストールしてください。
yum install mod_ssl
次にApacheで利用する証明書を生成します。
(お金があるなら信頼性が高い第3者機関の正式な証明書をVerisignやGlobalSignなどから購入すると良い)
まずは、秘密鍵を生成します。
mkdir /etc/httpd/key
cd /etc/httpd/key
openssl genrsa -des3 -out server.key 1024
すると、パスフレーズを聞かれる画面がでます。
Enter pass phrase for server.key: aaaaa (※自分だけわかる適当なパスフレーズを打ち込んでください)
Verifying – Enter pass phrase for server.key: aaaaa (※確認画面にも同様のパスフレーズを打ち込む)
次にCSRファイルを作成します。本来はこれを第3者機関に提出し、信頼できる証明書を発行してもらいます。
openssl req -new -key server.key -out server.csr
するとまた質問が出るので、1個ずつ回答します。
(※先ほど作成したパスフレーズを打ち込みます)
Enter pass phrase for server.key: aaaaa
(※国を聞かれています。私は日本なのでJPです)
Country Name (2 letter code) [GB]: JP
(※州・県を聞かれています。福岡なのでFukuokaです)
State or Province Name (full name) [Berkshire]:Fukuoka
(※市を聞かれています。福岡近郊なのでFukuokaにしちゃいます)
Locality Name (eg, city) [Newbury]:Fukuoka
(※会社名を聞かれてます。法人じゃないけど、Hattaraといれちゃう)
Organization Name (eg, company) [My Company Ltd]: Hattara
(※部署名を聞かれてますが、部署はないので、部署ある人だけ入力ください)
Organizational Unit Name (eg, section) []:
(※証明書のドメイン名を入力します。)
Common Name (eg, your name or your server’s hostname) []:hattara.info
(※メールアドレスを書かれます。いれたければ、入力してください。)
Email Address []:
(※パスワードの入力を求められますが、特に指定する必要なさそうなので、スルーです。)
A challenge password []:
(パスワードの確認画面もスルーです。)
An optional company name []:
そして、本題の証明書を作成するわけですが、
上記でも書いてある通り、貧乏な私は、第3者機関の信頼できる証明書を生成するお金がないので、
自己証明(オレオレ詐欺ならぬ、オレオレ証明書)を生成します。
とりあえず100年くらい持つ証明書を生成しておきます。
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 36500
するとまた、見慣れた表示がでます。
Enter pass phrase for server.key: aaaaa (※先ほど入力したパスフレーズを入力してください)
これでとりあえず自己証明書が生成完了したことになるわけですが、
このままだとApacheの再起動のたびにパスフレーズを入力するはめになるので、
秘密鍵からパスフレーズを削除します。
mv -i server.key server.key_backup
openssl rsa -in server.key_backup -out server.key
すると、いつもどおりパスフレーズを聞かれるので、入力する
Enter pass phrase for server.key_backup: aaaaa (※先ほど入力したパスフレーズを入力)
これで本当にSSL証明書の生成フェーズは完了。
こっからは、Apache側でhttps起動してくれるように設定します。
cd /etc/httpd/conf.d/
cp -p ssl.conf ssl.conf_backup (※一応バックアップとっておきましょう。たしなみですね。)
vi ssl.conf
まずは、秘密鍵の設定を修正します。
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
↓
SSLCertificateKeyFile /etc/httpd/key/server.key
次に証明書ファイルの設定を修正。
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
↓
SSLCertificateFile /etc/httpd/key/server.crt
※一応Apacheの設定に問題がないかを確認する。
/etc/rc.d/init.d/httpd configtest
結果が、「Syntax OK」なら問題なし。
最後にApache自体を再起動させてあげれば完了。
/etc/rc.d/init.d/httpd restart