ラベル Apache の投稿を表示しています。 すべての投稿を表示
ラベル Apache の投稿を表示しています。 すべての投稿を表示

2014年10月9日木曜日

Apacheをyum updateしたら.htaccessが効かなくなった

概要

自分の開発用のサーバをyum -y updateしたら対象にhttpdパッケージが入っいて、開発だから問題ないと思ってアップデートしたら、いつもBasic認証がかかるページに認証がかからなくなっていたので対処しました
結構焦りました

環境

  • CentOS 5.10 (Final)
  • Apache 2.2.3

各種設定内容

以下の設定として話を進めていきます
2.2.3のデフォルトで何もしていなければ以下の構成になっているかと思います
モジュール関連は今回関係ないですが、基本的なことなのでついでに記載しておきます

  • DocumentRoot
    /var/www/html
  • 設定ファイル配置パス
    /etc/httpd/sites-available
    /etc/httpd/sites-enabled
  • モジュール配置パス
    /etc/httpd/mods-available
    /etc/httpd/mods-enabled
  • モジュールパス
    /usr/lib64/httpd/modules/mod_rewrite.so

設定方法

.htaccess自体はディレクトリごとに設定を変えたいときに使う機能です
Apacheのルール設定は階層な構造的になっていて

システム全体の設定 -> VirtualHostごとの設定 -> ディレクトリパスごとの設定 -> ディレクトリごとの設定

みたいな感じで必要に応じて細かく設定することができるようになっています

で、その階層的な設定の可否を制御しているのがAllowOverrideディレクティブというやつで、こいつの設定次第で細かく設定できるかできないか決まってきます

今回の原因としてはこいつが細かく設定できないモードになっていてディレクトリごとに設定できるはずの.htaccessが使えない状態になっていました

修正した箇所は以下の通り

vim /etc/httpd/sites-enabled/000-default

#AllowOverride None
↓
AllowOverride All

Noneになっているとどうやら細かい設定できないモード(というかここで設定した項目を上書いて変更することはできないモード)になっていたので.htaccessがうまく動いていませんでした
書き換えたあとはservice httpd restartとかでApacheを再起動してください

まぁ要するに大丈夫だろと思ってyum updateしたら設定ファイルまで書き換わってしまって大変なことになったということです

2013年12月3日火曜日

apacheでリアルタイムに秒間リクエスト数を取得する方法

apachetopというコマンドを使用することでリアルタイムの値を取得することが可能です
apachetopはデフォルトではインストールされていませんので
yum -y install apachetop
でインストールしてください(CentOS 6.3の場合)
インストールしたらapacheのログを引数として以下のように実行します

apachetop -T 1 -d 1 -f /var/log/httpd/http+access.log

apachetopはアクセスログを元に現在のリクエスト数を取得することができます
「-T」はログ監視する間隔でこれを1秒にすることで1秒間の間に流れたログを元にアクセス数を算出してくれます

サーバ上のリソース状況を監視するtopコマンド同様で標準出力に出続けます
なのでリダイレクトなどを使ってファイルに出力したり、awkやgrepと組み合わせてコマンドを実行するたびに値を取得するのはちょっと難しいかもしれないです
監視データを永続的に持っておきたい場合にはzabbixを使ったapacheの監視方法を別記事で紹介してますのでそちらを参照してください
http://kakakikikeke.blogspot.jp/2013/06/chefzabbixapache.html

2013年9月10日火曜日

ApacheでVirtualHostを追加して複数ポートでListenする方法

■既存ファイルの修正
vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 1080 ← 追加

■新規ファイルの追加
vim /etc/httpd/conf.d/yoshi.conf
<VirtualHost *:1080>
    DocumentRoot "/var/www/"
    ServerName 192.168.10.11
    <Directory "/">
        Options FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Deny  from All
    </Directory>
</VirtualHost>

service httpd restart
netstat -an | grep 1080

http://192.168.10.11:1080/
に問い合わせてDocumentRootの情報が表示されることを確認する
VirtualHostの設定は最低限の設定なので必要に応じて設定を追加してください

2013年9月4日水曜日

【Apache】(98)Address already in use: make_sock: could not bind to address [::]:443

■環境
CentOS release 6.3 (Final)
Server version: Apache/2.2.15 (Unix)

■原因
/etc/httpd/conf.d/ssl.conf
と
/etc/httpd/ports.conf
の両方で443ポートの設定を記述しているため

■対処方法
rm /etc/httpd/conf.d/ssl.conf

/etc/httpd/conf.d/ssl.confを削除するとssl_moduleが無効になる場合がある
その場合ため削除後にssl_moduleを有効にする設定を行う

touch /etc/httpd/mods-available/ssl.conf
vim /etc/httpd/mods-available/ssl.conf
<IfModule mod_ssl.c>
#
# Pseudo Random Number Generator (PRNG):
# Configure one or more sources to seed the PRNG of the SSL library.
# The seed data should be of good random quality.
# WARNING! On some platforms /dev/random blocks if not enough entropy
# is available. This means you then cannot use the /dev/random device
# because it would lead to very long connection times (as long as
# it requires to make more entropy available). But usually those
# platforms additionally provide a /dev/urandom device which doesn't
# block. So, if available, use this one instead. Read the mod_ssl User
# Manual for more details.
#
SSLRandomSeed startup builtin
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/urandom 512

##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##

#
#   Some MIME-types for downloading Certificates and CRLs
#
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog  builtin

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism
#   to use and second the expiring timeout (in seconds).
#SSLSessionCache         dbm:/var/run/apache2/ssl_scache
SSLSessionCache        shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300

#   Semaphore:
#   Configure the path to the mutual exclusion semaphore the
#   SSL engine uses internally for inter-process synchronization.
SSLMutex  default

SSLHonorCipherOrder On
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
#   enable only secure ciphers:
SSLCipherSuite RC4-SHA:HIGH:!ADH
#   Use this instead if you want to allow cipher upgrades via SGC facility.
#   In this case you also have to use something like
#        SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
#   see http://httpd.apache.org/docs/2.2/ssl/ssl_howto.html.en#upgradeenc
#SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

# enable only secure protocols: SSLv3 and TLSv1, but not SSLv2
SSLProtocol all -SSLv2

</IfModule>

touch /etc/httpd/mods-available/ssl.load
vim /etc/httpd/mods-available/ssl.load
LoadModule ssl_module /usr/lib64/httpd/modules/mod_ssl.so

cd /etc/httpd/mods-enabled
ln -s /etc/httpd/mods-available/ssl.conf ssl.conf
ln -s /etc/httpd/mods-available/ssl.load ssl.load

service httpd restart

再起動時に該当のエラーが出ないことを確認する
まだ、エラーが出るという場合は今回削除したファイル以外にも443ポートの設定を記述している箇所があると思われるので
そのファイルを削除または443ポートの設定を記載している箇所を削除する

今回はmods-available内に設定ファイルを設置しシンボリックリンクを貼ることでssl_moduleを有効にしたが
これはchefでApacheをインストールした場合の設定であり
自動でmods-available配下の設定ファイルをincludeする設定を事前に行っている

2013年7月31日水曜日

【apache】Limitを使ってHTTPメソッドごとにアクセス制限をする

■概要
前回、Locationを使ってIP制限をかける方法を紹介しました
http://kakakikikeke.blogspot.jp/2013/07/apachex-forwarded-for.html
今回は更にLocation+Limitを使ってアクセスされたパスとHTTPメソッドを
判断してアクセス制御する方法を紹介します

■設定
vim /etc/httpd/sites-enabled/000-default
<VirtualHost *:80>
    SetEnvIf X-Forwarded-For "192.168.10.101" deny_ip
    SetEnvIf X-Forwarded-For "192.168.10.102" deny_ip

    <Location /test>
        <Limit POST>
            Order deny,allow
            Deny from all
            Allow from env=deny_ip
            ProxyPass ajp://192.168.20.100:8009/sample-app/
        </Limit>
        <LimitExcept POST>
            Order allow,deny
            Allow from all
        </LimitExcept>
    </Location>
</VirtualHost>

上記設定後にターミナルから以下を実行して設定が反映されているか確認します

  • curl -X GET https://192.168.20.100/
  • ⇒deny_ipに登録されていればアクセスできる
  • curl -X POST https://192.168.20.100/
  • ⇒deny_ipに登録されていないとアクセスできない(apacheの403がそのまま返ってくることを確認する)

結果の通りですが、POSTをHTTPメソッドで指定した場合はエラーが返却されます

また設定に際してLimitとLimitExceptは基本ペアで設定するようにしてください
参考サイト:http://httpd.apache.org/docs/2.2/ja/mod/core.html

2013年7月28日日曜日

【apache】X-Forwarded-Forの設定方法と使い方(LocationごとにIP制限)

■概要
そもそもX-Forwarded-Forを使う場合ですが基本はロードバランサを使っているときです
Webサーバに到達した際にアクセス元のIPがロードバランサになってしまうので
本当のアクセス元IPを取得するためにX-Forwarded-Forの設定を実施します

今回はログの出し方とX-Forwarded-Forを使ったIP制限の方法を紹介します
またapacheのインストールはchefを元に実施しているものとします

■前提条件
X-Forwarded-Forはhttpで受ける際に取得することができる値です
http(LB)→http(server)

httpsでX-Forwarded-Forを使いたいときには
SSLアクセラレータ付きのLBを使用しておりかつサーバ証明書を取得しておりかつサーバ側は80番ポートで受ける必要があります
https(LB + SSLアクセラレータ + 証明書)→http(server)

■ログの出し方
vim /etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
↓
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\"" combined

vim /etc/httpd/sites-enabled/000-default
000-defaultは環境によって異なります
VirtualHostを設定している設定ファイルを編集してください
CustomLog /var/log/httpd/access_default.log combined
combined になっていることを確認する

■X-Forwarded-Forを使ったIP制限方法
あるIPの場合はdenyするようにしてみます
vim /etc/httpd/sites-enabled/000-default
<VirtualHost *:80>
    SetEnvIf X-Forwarded-For "192.168.10.101" deny_ip
    SetEnvIf X-Forwarded-For "192.168.10.102" deny_ip

        <Location />
            Order allow,deny
            Allow from all
            Deny from env=deny_ip
            ProxyPass ajp://192.168.20.100:8009/sample-app/
        </Location>

        <Location /*/test/>
            Order deny,allow
            Deny from all
            Allow from env=deny_ip
            ProxyPass ajp://192.168.20.100:8009/sample-app/
        </Location>
</VirtualHost>

SetEnvIfでX-Forwarded-ForでフィルタリングするIPを指定します(正規表現での指定も可能なのでCIDR指定出来ます、今回はしてません)
当たり前ですが、80番のVirtualHostで受けています

「/」のLocationに対しては指定のIPを拒否する設定をしています
ポイントとしては allow,deny の順番で指定することで全許可してから指定のIPだけ許可しています

「/*/test/」のLocationに対しては指定のIPを許可する設定をしています
ポイントとしては deny,allow の順番で指定することで全拒否してから指定のIPだけ許可しています

LocationMatchディレクティブを使うと更に高度な正規表現を使用することができます

2013年7月26日金曜日

【apache】ロードバランサ+SSLアクセラレータがある場合のhttp→httpsリダイレクト方法

■概要
ロードバランサ(LB)にSSLアクセラレータ機能がある場合、LBで443を受け、後ろのWebサーバは
80で受けるのが定石になっています
その場合、追加のポートとしてLBで80を受けてWebサーバの80に流すことはできますが、その場合は
当たり前ですがhttpでのアクセスになります
httpでアクセスしてもhttpsにリダイレクトされる方法をapacheを使って紹介します

■構成
80で受けた場合はリダイレクト用のポートに流してあげます
ここではリダイレクト用のポートを1080とします
80(LB)→1080(Web)→リダイレクト→443(LB)→80(Web)

■設定
VirtualHost 1080用の設定ファイルにリダイレクトするための設定を記載します
<Virtualhost *:1080>
  ServerName www.test.com

  RewriteEngine On
  RewriteLog "logs/ssl_rewrite_log"
  RewriteLogLevel 0
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^(.*)$ https://www.test.com%{REQUEST_URI} [R,L]
</Virtualhost>

ServerNameは必要に応じて設定してください
mod_rewriteが必要になりますのでapacheで有効にしてください
mod_rewriteのインストール方法も紹介しています
http://kakakikikeke.blogspot.jp/2013/06/apachehttphttps.html

RewriteCond は443以外のアクセスだった場合としています
この場合は絶対443にはならないのでその後のRewriteRuleでhttpsのURLに強制リダイレクトします


やっていることは非常に単純ですが、これでhttpにアクセスしてもhttpsにリダイレクトされるようになります
他にもやる方法はあると思いますので参考までに見てください

2013年6月30日日曜日

【Apache】httpをすべてhttpsにリダイレクトする方法

■概要
今回もchefでapacheをインストールした場合の手順です
chefでのapacheインストール方法は以下を参照ください
http://kakakikikeke.blogspot.jp/2013/05/opscodecookbooks.html

■手順
■モジュールの有効化
cd /etc/httpd/mods-available/
touch rewrite.load
vi rewrite.load
LoadModule rewrite_module modules/mod_rewrite.so
cd ../mods-enabled/
ln -s /etc/httpd/mods-available/rewrite.load rewrite.load
service httpd restart
apachectl -M | grep rewrite

■リダイレクト設定
vi /etc/httpd/sites-enabled/000-default
RewriteEngine On
RewriteLog "logs/ssl_rewrite_log"
RewriteLogLevel 0
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
service httpd restart

Rewriteの宣言はVirtualHostディレクティブ直下に記載することができます

2013年6月13日木曜日

【chef】apacheとtomcatを連携してmod_proxy_balancerを有効にする方法

■概要
前回に引き続きchefでapacheをインストールした場合のmod_proxy_balancerを有効にする方法を紹介します
http://kakakikikeke.blogspot.com/2013/06/chefapachetomcatajp.html

■apache側設定
■モジュールの有効化
cd /etc/httpd/mods-available
vi proxy.load
LoadModule proxy_balancer_module /usr/lib64/httpd/modules/mod_proxy_balancer.so
上記を追記します

service httpd restart
apachectl -M | grep proxy_balancer_module
モジュールが有効になっていることを確認する

■confファイル修正
cd /etc/httpd/sites-available
vi test.conf
<Location />
  Order allow,deny
  Allow from all
  ProxyPass balancer://localcluster/ stickysession=JSESSIONID nofailover=Off
</Location>
localclusterはバランシングするtomcatサーバのクラスタ名を自由に設定することができます
Locationの追記箇所はDirectoryの閉じタグ直下で問題ないです
JSESSIONIDを使ってバランシングのセッション管理をするための設定も記述します
これによりログイン等の動作が行われると自動的にcookiesにJSESSIONIDが付与され同じサーバにアクセスし続けます

<Proxy balancer://localcluster/>
  BalancerMember ajp://appserver001:8009/ loadfactor=10 route=appserver001
  BalancerMember ajp://appserver002:8009/ loadfactor=10 route=appserver002
</Proxy>
バランシングするtomcatサーバ2台を仮に「appserver001」「appserver002」としています

service httpd restart
再起動します、apache側はこれで完了となります

■tomcat側設定(appserver001, appserver002で実施する)
■server.xml修正
vi /usr/local/tomcat/default/conf/server.xml
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaulthost="localhost" jvmroute="appserver001">
jvmRouteを設定することでJSESSIONIDに「.appserver001」という文字列を付与することができ
cookiesの情報を見れば現在どちらのサーバにバランシングされているかがわかるようになります

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">

  <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>

  <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
                address="228.0.0.204"
                port="20001"
                frequency="500"
                dropTime="3000"/>
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
              address="appserver001"
              port="4000"
              autoBind="100"
              selectorTimeout="5000"
              maxThreads="6"/>

    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
      <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
  </Channel>

  <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
  <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

  <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
            tempDir="/tmp/war-temp/"
            deployDir="/tmp/war-deploy/"
            watchDir="/tmp/war-listen/"
            watchEnabled="false"/>

  <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
  <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
tomcatのクラスタ設定を変更します
アプリサーバ同士でsessionを共有するために実施します
上記設定はかならず<Host>タグの間に記載してください
<Engine>タグだとうまくレプリケーションしてくれませんでした

apacheでセッション保持をしますがtomcat側でも別途セッション共有をしておく必要があります
例えばapacheが2台ある場合には一回目のアクセスはwebA→appAだったのに二回目のアクセスがwebB→appBになるとtomcat側のセッションがない状態になってしまうからです
webAにリクエストが行き続ければ問題はないですがそういったケースはほとんどありえません

vi /usr/local/tomcat/default/conf/tomcat-users.xml
<user username="manageuser" password="manageuserpass" roles="admin,manager,manager-gui,admin-gui"/>
tomcatの管理画面にログインしてJSESSIONIDの挙動を確認するために管理画面用のユーザを作成します
余談ですが、admin-guiがないと「Host Manager」の画面にログインできません

service tomcat restart
tomcatを再起動します、これで設定完了です

tomcatの管理画面から「ManagerApp」と進みベーシック認証を実施します
認証後にcookies情報を確認すると設定した文字列が付与されかつ
Ctrl+F5等で画面をリロードしても同じサーバにバランシングされ続けることが確認できると思います

■参考サイト

2013年6月12日水曜日

【chef】apacheとtomcatの連携をajpで設定する方法

■概要
chefを使ってapacheとtomcatをインストールした場合のajpの設定方法について紹介します
chefを使ってapacheとtomcatをインストールする方法は以下で検証した通りです
http://kakakikikeke.blogspot.com/2013/05/opscodecookbooks.html 

■環境
CentOS 6.2 64bit
Apache 2.2.15
Tomcat 7.0.32.0
Java 1.7.0_17-b02

■tomcat側設定
vi /usr/local/tomcat/default/conf/server.xml
以下のとおり8080の部分をコメントアウトします
<!--
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->

service tomcat restart
netstat -an | grep 8080
8080が起動していないことを確認します

■apache側設定
■confファイルの設定
cd /etc/httpd/sites-available
cp -ipr default-ssl test.conf
vi test.conf
<Location />
  Order allow,deny
  Allow from all
  ProxyPass ajp://localhost:8009/
</Location>
/を設定しているDirectoryタグの閉じタグの直後に記載します
localhostの部分はtomcatがインストールしてある振り分け対象のホスト名を記載してください

ErrorLog /var/log/httpd/error_test.log
CustomLog /var/log/httpd/access_mbaas.log combine
アクセスログとエラーログもVirtualHostごとにわける場合は上記の箇所の設定を変更します

また、ports.confに記載しているNameVirtualHostとtest.confのVirtualHostに記載するIPアドレス(ドメイン)値は同じでなければなりません
例えば、parts.confが「*:443」と記載しているならtest.confも「*:443」と記載しなければなりません

■再起動
cd /etc/httpd/sites-enabled/
ln -s /etc/httpd/sites-available/test.conf test.conf

service httpd restart
apachectl -f /etc/httpd/sites-available/test.conf
エラーができないことを確認する

https://localhost/
にアクセスしてtomcatのROOTコンテキスト(管理画面)が表示されることを確認します

■トラブルシューティング
  • apacheのエラーログにclient denied by server configurationと出ている場合Locationの設定がおかしい可能性があります(Allow from allがない等)
  • apacheのエラーログにInvalid method in requestが出る場合はVirtualHostの設定がおかしい可能性があります(IPアドレスやドメインの指定がおかしい等)

2013年5月4日土曜日

【apache】DocumentRootでindex.cgiを動作させる方法

■環境
CentOS release 6.4 (Final) x86_64
perl v5.10.1

■apache httpdインストール
yum -y install httpd*

■index.cgiの作成
cd /var/www/html
wget http://www.tohoho-web.com/cgi/wwwperl.txt
mv wwwperl.txt index.cgi
※perlのパスだけ書き換える必要があるかもしれない
nkf -w --overwrite index.cgi
chmod 755 /var/www/html/index.cgi

■apache設定
vi /etc/conf/conf/httpd.conf
以下を編集する
Options Indexes FollowSymLinks
↓
Options Indexes FollowSymLinks ExecCGI

#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi

DirectoryIndex index.html index.html.var
↓
DirectoryIndex index.cgi index.html index.html.var

■動作確認
service httpd start
http://localhost/にアクセスして環境変数の一覧が表示されることを確認する

2013年2月1日金曜日

【Apache】IPアドレスでアクセス元を制限する方法(httpd.conf編)

1. vi /etc/httpd/conf/httpd.conf
で以下の場所に拒否するIPを入力してください
入力方式は「IPアドレス」「ホスト名」「ドメイン」「CIDR」が指定可能です
<Directory "/var/www/html">
    AuthUserFile    /var/www/html/.htpasswd
    AuthGroupFile   /dev/null
    AuthName        "Please Enter Your ID / PW"
    AuthType        Basic
    Require valid-user
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny  ⇒ なければここも入力
    Allow from all    ⇒ なければここも入力
    Deny from yoshi3  ⇒ ここに拒否するIPを追記
</Directory>

2. service httpd restart
で追記したIP以外からはアクセスできないと思います
デフォルトのままだとApacheのデフォルトの画面が表示されてしまいますので
それも表示させたくない場合には

3. mv /var/www/error/noindex.html{,back}
を実行してデフォルトのページのリネームをします
また/etc/httpd/conf.d/welcome.confがある場合にもリネームまたは削除を実施してください

2012年3月19日月曜日

【Apache+OpenSSL】オレオレ証明書を作ってみた

 作ってみました。というか以下のリンクを参考に作成してみただけです。

http://www.maruko2.com/mw/Apache/SSL%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8mod_ssl%E3%81%AE%E8%A8%AD%E5%AE%9A

まずはここに記載してある通りに必要な証明書とキーを作成してから
以下を見直すといいかもしれません。

■yum -y install mod_ssl
/etc/httpd/conf.d/ssl.conf がない場合は上記を実行

■サーバ証明書とキーファイルの設定
上記にも書いてありますが、ここだけ別途抜き出して書いてみました
/etc/httpd/conf.d/ssl.conf の112行目に「SSLCertificateFile」
の設定を作成したサーバ証明書があるパスに書き換えましょう
(.crtファイルとなっているものです)
/etc/httpd/conf.d/ssl.conf の120行目に「SSLCertificateKeyFile」
の設定を作成したサーバ証明書があるパスに書き換えましょう
(.keyファイルとなっているものです)

■ホスト名の設定
service httpd start を行った場合に
---
httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
---
と出る可能性があるので、
/etc/httpd/conf.d/ssl.conf の86行目に「ServerName」
/etc/hostsに記載しているホスト名を書きましょう
ワタシの場合はこんな感じで記載しました
ServerName yoshi3:443

■確認 service httpd start
(サーバを起動して際にパスワードを聞かれることがありますが、パスなしで起動することもできるのでその方法は上記の参考URLに記載してあります)
443のポートを開放する
ブラウザで確認
(「信頼できない接続」警告が表示されますが、例外追加で接続できます。証明書がオレオレ証明書なので、警告がでているのだと思います。)

以上です。かなり箇条書きで見づらくてもうしわけないです。。。
次やるときは、信頼できない接続の警告もでない証明書の作成もやりたいかなーとか思っていますが、いろいろ大変そうです。というかムリ
参考サイト:http://www.ssl-secure.jp/about_ssl.html
何かしら参考になればと思います。

2012年3月11日日曜日

5分でできるApacheでのベーシック認証

[root@localhost ~]# emacs -nw /etc/httpd/conf/httpd.conf
DocumentRootを調べます
DocumentRoot "/var/www/html"

DocumentRootディレクティブを探します
<Directory "/var/www/html">

上記のディレクティブ内に以下を追記します
AuthUserFile /var/www/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Your ID / PW"
AuthType Basic
Require valid-user

[root@localhost ~]# cd /var/www/html/
先ほど調べておいたDocumentRootに移動します

[root@localhost ~]# htpasswd -c .htpasswd kakakikikeke
New password: **********
Re-type new password: **********
Adding password for user kakakikikeke

[root@localhost ~]# touch .htaccess
[root@localhost ~]# emacs -nw .htaccess
以下を記載して保存してください
AuthUserFile /var/www/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Your ID / PW"
AuthType Basic
Require valid-user
<files "^.(htpasswd|htaccess)$"="" ~="">
  deny from all
</files>

[root@localhost ~]# chmod 604 .ht*
[root@localhost ~]# service httpd start
httpd を起動中: OK

でブラウザを開いてIPアドレスを入力すれば
ベーシック認証のダイアログが発動して設定したID/PWでないと
ログインできないはずです
超簡単でしょ。お試しあれ