SSL導入
- mods-enabledに以下のシンボリックリンクを作成
ssl.conf -> ../mods-available/ssl.conf ssl.load -> ../mods-available/ssl.load
- サーバ用秘密鍵の作成
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:
- サーバ用公開鍵の作成
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 []:入力なし
- 起動時パスワード要求の回避
openssl rsa -in server.key -out server.key Enter pass phrase for server.key: writing RSA key
- サーバ用証明書の作成
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 Signature ok subject=上で入力した情報が出てくる Getting Private key
- 証明書をブラウザにインポートするためのファイル作成
openssl x509 -in server.crt -out server.der -outform DER
- 確認
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
- ssl.confに以下の項目を追加
SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key
- 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])