お名前.com VPS にApacheをインストールしてSSL環境も整える

2013年6月3日

WordPress

お名前.com VPS メモリ2G プランに Nginx で WordPress を構築するメモ、第5回目。前回は EPEL、RPMforge、remi リポジトリを利用できるようにしました。

WordPress
お名前.com VPS で EPEL、RPMforge、remi リポジトリを利用する

お名前.com VPS メモリ2G プランに Nginx で WordPress を構築するメモ、第4回目。前回はメール ...

続きを見る

今回は、お名前.com の VPS に Apache をインストールし、外部に公開するうえで最低限の設定を行います。WordPress の管理画面を SSL 化したいので、SSL の環境も整えます。最終的には Nginx で WordPress を動作させるので Apache は不要になりますが、慣れ親しんだ Apache で環境を作っておくと、Nginx で問題が起きた時の切り分けがしやすくなります。

目次

  1. Apache をインストール
  2. httpd.conf 設定
  3. ベーシック認証のユーザとパスワードを設定
  4. SSL 環境のセットアップ
  5. mod_ssl をインストール
  6. 秘密鍵と自己署名証明書を作成する
  7. ssl.conf 設定
  8. Welcome ページを非表示にする

Apache をインストール

yum で Apache をインストールします。

# yum install httpd

Apache を起動

# /etc/init.d/httpd start

クライアント PC のブラウザから VPS にアクセスして動作確認します。Apache の Welcome ページが表示されれば OK です。

ブラウザで VPS にアクセスするときは、ホスト名に IP アドレスを直接指定しても良いですが、vXXX-XXX-XXX-XXX.myvps.jp のホスト名でもアクセスできます。例えば、VPS の IPアドレスが 192.168.1.2 の場合は、http://v192-168-1-2.myvps.jp で VPS のサイトにアクセスできます。

httpd.conf 設定

Apache は一時的にしか稼働しないのでデフォルトのままでも問題ありませんが、WEB に公開する上で最低限の設定をしておきます。また、検証中のサイトは他人に見られたくないので、サイト全体をベーシック認証でガードしておきます。

デフォルトからの差分のみ記述です。

# サーバの情報を隠す
ServerTokens Prod
ServerSignature Off
TraceEnable Off
# KeepAlive をオン
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 2
# ファイル一覧を表示させないように
# サイト全体にベーシック認証をかける
<Directory />
    Options -Indexes FollowSymLinks
    AuthType Basic
    AuthName "Please Enter Your Password"
    Require valid-user
    AuthUserFile /var/www/.htpasswd
</Directory>
# 以下のモジュールを有効にし、それ以外は無効に
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule cgi_module modules/mod_cgi.so

Apache の設定・チューニングは以下のサイトが大変参考になりました。

ベーシック認証のユーザとパスワードを設定

htpasswd コマンドで /var/www/.htpasswd にベーシック認証のユーザとパスワードを設定します。

# htpasswd -c /var/www/.htpasswd ユーザ名

New password:
Re-type new password:

Apache を再起動して動作確認

# /etc/init.d/httpd restart

ブラウザで http://vXXX-XXX-XXX-XXX.myvps.jp にアクセスし、ベーシック認証を経由して Welcome ページが表示されれば OK です。

SSL 環境のセットアップ

WordPress の管理画面は SSL 化するので Apache で SSL 環境もセットアップしておきます。管理画面には PC からしかアクセスしないので自己署名証明書で問題ありません。

OpenSSL
オレオレSSL証明書(自己署名証明書)を作るワンライナー

オレオレ SSL 証明書(自己署名証明書)を作るワンライナーです。 $ openssl req -x509 -sha25 ...

続きを見る

mod_ssl をインストール

まず、mod_ssl をインストールします。

# yum install mod_ssl

秘密鍵と自己署名証明書を作成する

サーバ秘密鍵と自己署名証明書(CRT)を作成します。証明書署名要求の Common Name (ホスト名)は vXXX-XXX-XXX-XXX.myvps.jp にしています。XXX-XXX-XXX-XXX の部分はご自身の VPS の IP アドレスにおきかえてください。

# cd ~
# openssl dgst -md5 /var/log/messages > rand.dat
# openssl genrsa -des3 -rand rand.dat 1024 > server.pem
# openssl rsa -in server.pem -out server.pem
# openssl req -new -days 365 -key server.pem -out csr.pem
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shibuya-ku
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:vXXX-XXX-XXX-XXX.myvps.jp
Email Address []:hoge@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
# openssl req -in csr.pem -key server.pem -x509 -days 365 -out crt.pem

秘密鍵と証明書を Apache が参照できる場所にコピーします。この後、ssl.conf にコピーしたファイルのパスを設定します。

# cp crt.pem /etc/pki/tls/certs/vXXX-XXX-XXX-XXX.myvps.jp.crt
# cp server.pem /etc/pki/tls/private/vXXX-XXX-XXX-XXX.myvps.jp.key
# rm *.pem
# rm rand.dat

ssl.conf 設定

ssl.conf の VirtualHost に秘密鍵と証明書のパスを記述します。

/etc/httpd/conf.d/ssl.conf

...
<VirtualHost _default_:443>
...
ServerName vXXX-XXX-XXX-XXX.myvps.jp:443
...
SSLCertificateFile /etc/pki/tls/certs/vXXX-XXX-XXX-XXX.myvps.jp.crt
...
SSLCertificateKeyFile /etc/pki/tls/private/vXXX-XXX-XXX-XXX.myvps.jp.key
...

Apache を再起動して設定を反映させます。

# /etc/init.d/httpd restart

動作確認

ブラウザで https://vXXX-XXX-XXX-XXX.myvps.jp にアクセスし、セキュリティ警告、ベーシック認証を経由して Welcome ページが表示されれば OK です。

Welcome ページを非表示にする

動作確認が取れれば Welcome ページは不要になるので表示しないようにします。

/etc/httpd/conf.d/welcome.conf のファイルの中身をすべてコメントアウト、もしくはファイルを削除します。

#-~
# This configuration file enables the default "Welcome"~
# page if there is no default index page present for~
# the root URL.  To disable the Welcome page, comment~
# out all the lines below.~
#~
#<LocationMatch "^/+$">~
#    Options -Indexes~
#    ErrorDocument 403 /error/noindex.html~
#</LocationMatch>~

終わりに

お名前.com VPS に Apache を導入したときのメモでした。次回は MySQLをインストールし WordPress 用にチューニングするところをやります。

MySQL
お名前.com VPS にMySQLをインストールしWordPress用にチューニング

お名前.com VPS メモリ2G プランに Nginx で WordPress を構築するメモ、第6回目。前回はApa ...

続きを見る

-技術ブログ
-