今回の構築で目的だった外部からRedmineの参照を一応達成したので、一旦まとめ的な感じで必要となったApacheの設定を綴ります。
Redmineを外部から参照するための要件は以下を挙げておりました。
- HTTPSで暗号化
- パスワード認証
- グローバルIPアドレスが一つなので、リバースプロキシで実現
- 遷移:インターネット→(HTTPS)→リバースプロキシ→(HTTP)→Redmine
問題1
前回SSLの設定をしてRedmineを公開するに際、apacheの再起動でエラーが出て、原因の特定に結構時間がかかりました。エラーログを見ると
[ssl:emerg] [pid 6318] AH02572: Failed to configure at least one certificate and key for www.eastforest.jp:443 [ssl:emerg] [pid 6318] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned [ssl:emerg] [pid 6318] AH02312: Fatal error initialising mod_ssl, exiting.
気になったのがwww.eastforest.jp:443という表示(Redmineのドメイン名ではない)。このサイトはHTTPSで設定していないです。あとはno certificate assignedの表示。SSLの設定はファイルを別にしていますが、結論としてはHTTPSをするバーチャルホストの設定にもSSLの設定(具体的には秘密鍵とサーバ証明書)を記述する必要がありました。
問題2
Redmineをログアウトすると、このサイト(www.eastforest.jp)に遷移してしまう現象がありました。原因はログアウトの遷移先がhttp://~であり、RedmineのバーチャルホストにはHTTP(80)の設定していないため、バーチャルホストの設定で上位に設定されているwww.eastforest.jpが適用されてしまうようです。RedmineのバーチャルホストでHTTP(80)の設定を追加すればいいのですが、HTTPS(80)でのアクセスは許可したくなかったので、HTTP(80)でリクエストがあった場合はHTTPS(443)にリダイレクトする設定を追加することにしました。
■設定
最終的には以下の設定で落ち着きました。
<VirtualHost *:80> ServerName <Redmineのホスト名> Redirect / https://Redmineのドメイン名/ </VirtualHost> <VirtualHost *:443> ServerName <Redmineのホスト名> ProxyPass / http://<RedmineのIPアドレス or ドメイン名>/ ProxyPassReverse / http://<RedmineのIPアドレス or ドメイン名>/ SSLEngine on SSLCertificateFile "/usr/local/httpd-2.4.9/conf/server.crt" SSLCertificateKeyFile "/usr/local/httpd-2.4.9/conf/server.key" <Location /> AuthType Digest AuthName <realm> AuthUserFile /usr/local/httpd-2.4.9/conf/<ファイル名> Require user <ユーザ名> </Location> </VirtualHost>
ブログに載せるとなると正しい情報を伝える必要があるので調査や検証も多くなり、ブログの文面も結構考えますので かなりの時間を要しますが、逆に理解も深まったのでよかったです。ただブログで備忘録をきっちり載せていけば、Redmineもそれほど必要じゃないかなと思い始めてたりして。
参考サイト
http://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect
最新記事
参考