フロントエンド開発Blog

オレには鈍器がある

linux , サーバ

apache

設定ファイルの構造


/etc/httpd/conf/
 httpd.conf

 vhosts/    ・・・Virtualhost :80
  prod/
   www.hogehoge.com.conf
  test/
   test.hogehoge.com.conf
 
 vhosts_ssl/  ・・・Virtualhost :443
  prod/
   www.hogehoge.com.conf
  test/
   test.hogehoge.com.conf
 
 ssl.crt/   ・・・ca.crtやserver.crt -> 20111210.crt 中間証明書、サーバID証明書
 ssl.csr/   ・・・csr生成時に
 ssl.key/   ・・・暗号鍵
 ssl.prm/   ・・・通常使用しない
 ssl.crl/   ・・・通常使用しない

 auth/     ・・・test環境のベーシック認証(全VH共用)のpwファイル設置
  .htpasswd_common

httpd.confの設定

  • WEBコンテンツの設置場所は”/usr/local/www”以下のディレクトリとします
  • VHありきで設定します
  • FQDN毎のVH設定は”/etc/httpd/conf/vhosts”と”/etc/httpd/conf/vhosts_ssl”にて
  • 本番(prod)とテスト(test)を構築します
  • 本番のドキュメントルートは”/usr/loca/www/prod/[FQDN]/htdocs”
  • 本番のログ設置場所は”/usr/loca/www/prod/[FQDN]/logs”
  • テストのドキュメントルートは”/usr/loca/www/test/[FQDN]/htdocs”
  • テストのログ設置場所は”/usr/loca/www/test/[FQDN]/logs”
  • テストにはBasic認証をかけます

デフォルトのhttpd.confからの変更点


<280行目付近>
DocumentRoot "/var/www/html"
	↓
#DocumentRoot "/var/www/html"
DocumentRoot "/usr/local/www/default/htdocs"


=========
<300行目付近>
#
# This should be changed to whatever you set DocumentRoot to.
#


	↓
#
# This should be changed to whatever you set DocumentRoot to.
#


========
    Options FollowSymLinks
	↓
    Options -Indexes FollowSymLinks ExecCGI Includes

=========
<400行目付近>
DirectoryIndex index.html index.html.var index.php
	↓
DirectoryIndex index.html index.htm index.html.var index.php

=================
<480行目付近>
ErrorLog logs/error_log
	↓
#ErrorLog logs/error_log
ErrorLog "| /usr/sbin/rotatelogs /usr/local/www/default/logs/error_log.%Y%m%d 86400 540"

=============
<510行目付近>
CustomLog logs/access_log combined
	↓
#CustomLog logs/access_log combined
CustomLog "| /usr/sbin/rotatelogs /usr/local/www/default/logs/access_log.%Y%m%d 86400 540" combined env=!nolog

===============
<540行目付近>
(iconのaliasをコメントアウト)
(web-davのaliasをコメントアウト)
(cgi-binのaliasをコメントアウト)

============
<600行目付近>
(AddIconByEncoding AddIcon DefaultIcon コメントアウト)

=================
<730行目付近>
(LanguagePriorityをja最優先)

===============
<750行目付近>
AddDefaultCharset UTF-8
↓
AddDefaultCharset Off

===============
<782行目付近>
#AddHandler cgi-script .cgi
	↓
AddHandler cgi-script .cgi .pl

================
<840行目付近>
(Alias /error/ "/var/www/error/"コメントアウト)

===========
<980行目付近>
#NameVirtualHost *:80
	↓
NameVirtualHost *:80
NameVirtualHost *:443

================
<末尾に追加>
AddType application/xhtml+xml html

Include conf/vhosts/prod/*.conf
Include conf/vhosts/test/*.conf

Include conf/vhosts_ssl/prod/*.conf
Include conf/vhosts_ssl/test/*.conf

vhosts/、vhosts_ssl/(ssl導入しない場合は不要)

記述規則を掲載します。

/etc/httpd/conf/vhosts/prod/www.hogehoge.com.conf


# NameVirtualHost
# name: www.hogehoge.com

<VirtualHost *:80>
  ServerName    www.hogehoge.com
  DocumentRoot  /usr/local/www/prod/www.hogehoge.com/htdocs
  CustomLog     "| /usr/sbin/rotatelogs /usr/local/www/prod/www.hogehoge.com/logs/access_log.%Y%m%d 86400 540" combined
  ErrorLog      "| /usr/sbin/rotatelogs /usr/local/www/prod/www.hogehoge.com/logs/error_log.%Y%m%d 86400 540"

  DirectoryIndex index.php index.html

  ErrorDocument 403 /error/403.html
  ErrorDocument 404 /error/404.html
  ErrorDocument 500 /error/500.html

 <Directory />
    Options +IncludesNOEXEC +ExecCGI
    AddHandler cgi-script .cgi .pl
    AddType text/html .shtml .html .htm
    AddOutputFilter INCLUDES .shtml .html .htm

    AllowOverride All
    Order allow,deny
    Allow from all
 </Directory>

</VirtualHost>

/etc/httpd/conf/vhosts_ssl/prod/www.hogehoge.com.conf


##
## SSL Virtual Host Context
##
<VirtualHost *:443>
  ServerName      www.hogehoge.com:443
  DocumentRoot    /usr/local/www/prod/www.hogehoge.com/htdocs
  CustomLog     "| /usr/sbin/rotatelogs /usr/local/www/prod/www.hogehoge.com/logs/access_log.%Y%m%d 86400 540" combined
  ErrorLog      "| /usr/sbin/rotatelogs /usr/local/www/prod/www.hogehoge.com/logs/error_log.%Y%m%d 86400 540"

  ErrorDocument 403 /error/403.html
  ErrorDocument 404 /error/404.html
  ErrorDocument 500 /error/500.html

  <Directory />
    AllowOverride All
    Options FollowSymLinks +ExecCGI
    DirectoryIndex index.html index.php
    Order allow,deny
    Allow from all
    #Order deny,allow
    #Deny from all
    #Allow from 111.111.111.111 #homepage
  </Directory>

##
## SSL Settings
##

TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/ca.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key


<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0


</VirtualHost>

sslの導入方法 – verisign/globalsign

ディレクトリの用意

/etc/httpd/conf内に以下のディレクトリを作成しておきます。


/etc/httpd/conf/
 ssl.crl/
 ssl.crt/
 ssl.csr/
 ssl.key/
 ssl.prm/

秘密鍵作成


$ cd /etc/httpd/conf/

 -- 秘密鍵作成 -- 
$ sudo openssl genrsa -des3 -out ./ssl.key/www.hogehoge.com_$(date +%Y%m%d)_pass.key 2048

 -- パスフレーズ解除 -- 
$ sudo openssl rsa -in ./ssl.key/www.hogehoge.jp_$(date +%Y%m%d)_2048_pass.key -out ssl.key/www.hogehoge.jp_$(date +%Y%m%d)_2048.key

 -- パスフレーズ付秘密鍵削除 -- 
$ sudo rm ./ssl.key/www.hogehoge.jp_$(date +%Y%m%d)_2048_pass.key

CSR作成


$ cd /etc/httpd/conf/
$ sudo openssl req -new -key ssl.key/www.hogehoge.jp_$(date +%Y%m%d)_2048.key -out ssl.csr/www.hogehoge.jp_$(date +%Y%m%d)_2048.csr

—-CSR情報例—–
●Country Name
JP
●State or Province Name 都道府県
Tokyo
●Locality Name 市区町村
Nerima-Ku
●Organization Name 組織名
HOGEHOGE co,ltd.
●Organization Unit Name 部署名

●Common Name ウェブサーバFQDN
www.hogehoge.jp

正式なCSR情報はクライアントから入手してください。

企業認証用中間証明書取得

最近のCA(中間証明書)を取得してください。以下は取得例です。


$ cd /etc/httpd/conf/
$ wget -O ssl.crt/globalsign_ov.crt https://jp.globalsign.com/repository/common/cer/ovcacert.cer

verisignの場合、中間証明書の他にクロスルート証明書というものが必要になります。

中間証明書の末尾に改行を入れ、続けてクロスルート証明書を記述してください。

verisign – 中間証明書について

オンラインから申し込み

verisignの場合は手持ちの個人アカウントでログインし、globalsignの場合は該当企業別アカウントでログインします。

帝国データバンクの企業コードを入力する欄がありますので事前に調べておきます。

電話認証について

クライアントと技術担当者宛に電話で在籍確認があります。手元にCSR情報を用意しておきます。

証明書の発行

技術担当者のメールアドレス宛に証明書が送られてきます。X.509形式の証明書をサーバへ設置します。


$ cd /etc/httpd/conf/
$ sudo vi ./ssl.crt/$(date +%Y%m%d).crt

更新の事を考えてシンボリックリンクを貼っておく

更新時は秘密鍵と証明書のシンボリックリンク貼り替えで済むように、初回導入時にシンボリックリンクを用意しておきます。


$ cd /etc/httpd/conf/
$ ln -s ./ssl.key/[秘密鍵] ./ssl.key/server.key
$ ln -s ./ssl.crt/[証明書] ./ssl.crt/server.crt

/etc/httpd/conf/vhosts_ssl内にSSL用のVH設定を作成

/etc/httpd/conf/vhosts_ssl/prod/www.hogehoge.com.conf を作っていない場合はこのタイミングで作っておく(ドキュメントルートは同一にしておく)

apacheの再起動


$ /sbin/service httpd configtest
$ /sbin/service httpd graceful

sslの更新

SSL導入の「CSR作成」~「証明書の発行」までは同じ手順となります。

シンボリックリンク貼り替え

lnコマンドのfオプションを付けるとforced(強制)となり、既にあるシンボリックリンクを上書きしてくれます。


$ cd /etc/httpd/conf/
$ ln -sf ./ssl.key/[新しい秘密鍵] ./ssl.key/server.key
$ ln -sf ./ssl.crt/[新しい証明書] ./ssl.crt/server.crt

ページトップへ

関連ページ

ページトップへ