SSL設定
* csrを作る
- opensslをインストールしておく (apt-get install openssl)
$ sudo apt-get install openssl
- ssl keyを保存するディレクトリを作成
$ cd /etc/apache2
$ sudo mkdir ssl
$ cd ssl
- passphrase関連の準備
使用するパスワードをpassphraseに保存し、sslpasscat用のshellを準備
$ sudo touch passphrase
$ sudo echo 'パスワード' > passphrase
$ sudo touch sslpasscat
-- sslpasscatのファイルの中身 --
#!/bin/bash
cat /etc/apache2/ssl/passphrase
-- ここまで --
実行権限を与える
$ sudo chmod 755 sslpasscat
- keyを生成する(パスワードは上記のpassphraseに記入したもの)
$ sudo openssl genrsa -des3 -out s.ドメイン名.key 1024
- 上記で作ったキーでcsrを生成する
$ sudo openssl req -new -key s.ドメイン名.key -out s.ドメイン名.csr
入力項目:
国: JP
地区: Tokyo
市区: Minato-ku
組織: ABC, Inc.
部署: Tech
common name: s.ドメイン名
入力後に聞かれるchallenge passはblank(無視)する
- 入力項目の確認方法
$ sudo openssl req -noout -text -in s.ドメイン名.csr
- 最後に、ここで生成したcsrを使って、rapidss.comからcrtを取得する
* crtを取得後
- apache2.2 common にある雛型を使いsslの設定ファイルの準備
$ sudo zcat /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz > /etc/apache2/site-available/ssl
- 準備後、下記のコマンドでsslの設定準備
$ sudo /usr/sbin/a2ensite ssl
$ sudo /usr/sbin/a2enmod ssl
- /etc/apache2/site-enabled/sslの設定
# sslpasscatの準備
SSLPassPhraseDialog exec:/etc/apache2/ssl/sslpasscat
# vhを明示的に指定
# ドキュメントルートを指定
DocumentRoot "/home/www/ドメイン名/production/document_root"
# common nameをServerNameに指定
ServerName s.ドメイン名:443
# ドメイン取得時に利用したドメイン管理メールを指定
ServerAdmin ssladmin@ドメイン名
# sslのerrorとaccessログを明示的に指定
ErrorLog /var/log/apache2/s.ドメイン名-error_log
TransferLog /var/log/apache2/s.ドメイン名-access_log
# crtを指定
SSLCertificateFile /etc/apache2/ssl/s.ドメイン名.crt
* sslのコンフィグ
DocumentRoot /home/www/ドメイン名/production/document_root
ErrorLog /var/log/apache2/s.ドメイン名-error.log
TransferLog /var/log/apache2/s.ドメイン名-access_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/s.ドメイン名.crt
SSLCertificateKeyFile /etc/apache2/ssl/s.ドメイン名.key
SSLOptions +StdEnvVars
Header set P3P "policyref='http://www.ドメイン名/p3p.xml', CP='CAO PSA OUR'"
Header set X-Powered-By "PHP5 ZendFramwork"
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog /var/log/apache2/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
RequestHeader set X_FORWARDED_PROTO 'https'
ServerSignature Off
php_value session.save_path '/home/www/ドメイン名/production/application/sess'
RewriteEngine On
RewriteCond %{REQUEST_URI} (login|signup)
RewriteRule ^(login|signup) http://www.ドメイン名/error/mente [L,R]
RewriteCond %{REQUEST_URI} !(SSLを通さないページパス)
RewriteRule ^(.*)?$ http://www.ドメイン名/$1 [L,R]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
APACHE側の設定へ 特定のページのみSSLを使う
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} (login|signup)
RewriteRule ^(login|signup)(.*)?$ https://s.ドメイン名/$1$2 [L,R]

コメントする