apache 設定まとめ

Last-modified: 2010-10-28 (木) 07:35:37

SSL導入

  1. mods-enabledに以下のシンボリックリンクを作成
    ssl.conf -> ../mods-available/ssl.conf
    ssl.load -> ../mods-available/ssl.load
  2. サーバ用秘密鍵の作成
    openssl genrsa -des3 -out server.key -rand 適当なファイル 1024
    9172 semi-random bytes loaded
    Generating RSA private key, 1024 bit long modulus
    .++++++
    ..........................................................++++++
    e is 65537 (0x10001)
    Enter pass phrase for server.key:
    Verifying - Enter pass phrase for server.key:
  3. サーバ用公開鍵の作成
    openssl req -new -key server.key -out server.csr
    Enter pass phrase for server.key:
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code)  [AU]:国コード的な
    State or Province Name (full name) [Some-State]:県名的な
    Locality Name (eg, city) []:市名的な
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:なんだろう?組織名?
    Organizational Unit Name (eg, section) []:ゆにっとねーむ?名前?
    Common Name (eg, YOUR name) []:ドメインか?
    Email Address []:そのまんま
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:入力なし
An optional company name []:入力なし
  1. 起動時パスワード要求の回避
    openssl rsa -in server.key -out server.key
    Enter pass phrase for server.key:
    writing RSA key
  2. サーバ用証明書の作成
    openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
    Signature ok
    subject=上で入力した情報が出てくる
    Getting Private key
  3. 証明書をブラウザにインポートするためのファイル作成
    openssl x509 -in server.crt -out server.der -outform DER
  4. 確認
    ls -l
    合計 16
    -rw-r--r-- 1 root root 993 2010-03-07 01:51 server.crt
    -rw-r--r-- 1 root root 725 2010-03-07 01:48 server.csr
    -rw-r--r-- 1 root root 693 2010-03-07 01:52 server.der
    -rw-r--r-- 1 root root 887 2010-03-07 01:51 server.key
  5. ssl.confに以下の項目を追加
    SSLCertificateFile /etc/apache2/ssl/server.crt
    SSLCertificateKeyFile /etc/apache2/ssl/server.key
  6. site-enableの設定項目に以下のような設定をする
    <VirtualHost *:443>
    	SSLEngine on
    …
    </VirtualHost>

リダイレクト

httpでアクセスしてきたモノをリダイレクトする
以下のページを参考に、設定に成功した
http://d.hatena.ne.jp/shimonoakio/20080226/1204089340
念のためコピペしておく

<IfModule mod_rewrite.c>
        RewriteEngine On
        #ログ出力したければ・・
        #RewriteLog /var/log/apache2/rewrite.log
        #RewriteLogLevel 1
        #SSLアクセスしてほしいページ
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^(/(login|admin)/.*)?$ https://%{HTTP_HOST}$1 [L,R]
        #非SSLアクセスしてほしいページ
        RewriteCond %{SERVER_PORT} ^443$
        RewriteRule !^/(login|admin) - [C]
        RewriteCond %{SERVER_PORT} ^443$
        RewriteRule ^(.*)?$ http://%{HTTP_HOST}$1 [L,R]
</IfModule>
#SSLアクセスしてほしいページ
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(/(login|admin)/.*)?$ https://%{HTTP_HOST}$1 [L,R]

443以外のポート(非SSL)で /login/や/admin/から始まるパスにアクセスがきたら、https://で始まるURLにリライト

#非SSLアクセスしてほしいページ
RewriteCond %{SERVER_PORT} ^443$
RewriteRule !^/(login|admin) - [C]

443ポート(SSL)で /login/や/admin/から始まらないパスにアクセスがきたら次のルールを適用([C])

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)?$ http://%{HTTP_HOST}$1 [L,R]

443ポート(SSL)でのリクエストはhttp://から始まるURLにリライト([L,R])