HTTPS編: FreeBSDでRedmineを動かす(FreeBSD+nginx+thin+Redmine+SQLite3)
サーバー証明書や鍵の準備
opensslで秘密鍵・公開鍵を作り、証明書を作成する。*1
# cd /etc/ssl # openssl genrsa -des3 -out cert.key 1024 # openssl req -new -key cert.key -out cert.csr # openssl x509 -in cert.csr -out cert.pem -req -signkey cert.key -days 365 # chmod 400 cert.*
(opensslコマンドは対話的に動作するが、ここでは動作の様子は省略した。)
nginxの設定
前回HTTP用に追記した部分をHTTPS用に書き換える。
server { listen 443; server_name host.example.com; ssl on; ssl_certificate /etc/ssl/cert.pem; ssl_certificate_key /etc/ssl/cert.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; root /usr/local/www/nginx; proxy_redirect off; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; proxy_read_timeout 300; proxy_pass http://redmine; } }
ここで、
proxy_set_header X-Forwarded-Proto $scheme;
の行は重要である。これを忘れると、Redmine上で何かデータの入力・変更を行うたびに、https://〜ではなくhttp://〜で始まるURLに飛ばされてしまう。
設定を終えたら動作を確認する。
# nginx -t # nginx -s reload # links https://host.example.com/
おまけ: Redmineをサブディレクトリでホストする時の設定
https://host.exmple.com/redmine/のようにサブディレクトリ付きでRedmineを動かす場合、/usr/local/etc/thin/redmine.ymlに以下の行を追記する。*2
prefix: /redmine
または、thinのコマンドラインに "--prefix /redmine" を追加してredmine.ymlを作成する。
設定を変更したらブラウザーで確認する。
# /usr/local/etc/rc.d/thin restart # links https://host.exmple.com/redmine/