先日、Subversion のリポジトリアクセスを SSL 対応にする手順を紹介しました。
SSL接続のみ許可する
さらに、/etc/apache2/conf.d/subversion.conf ファイルの記述に SSLRequireSSL の行を追加することで、
<Location /svn/[リポジトリ名]> DAV svn SVNPath /var/lib/svn/[リポジトリ名] AuthType Basic AuthName "Subversion Repositries" AuthUserFile /var/lib/svn/itpk/conf/.htpasswd Require valid-user SSLRequireSSL </Location>
このリポジトリには、 Apache2 経由では SSL通信でしかアクセスできなくなります。
こうしておくことで、設定ミスで(または面倒だからという理由で)通常のHTTPで通信することがなくなるので、安全性が高まります。
Redmineからリポジトリへアクセス
ところで、Redmine では プロジェクトにリポジトリを対応付けられます。
とてもよくできた機構で、どのチケット(=Redmineでは1つの作業をチケットで管理する)のために、どのファイルのどこを変更したのかが分かるのです。
で、Redmineでこの機能を使うためには、プロジェクトの設定で リポジトリを指定する必要があります。
ところが、SSL通信を使って “https://…” を指定すると、Redmineからはリポジトリにアクセスできません。
どうも、SSL通信で失敗しているようです(正式な証明書を使用していないせいかもしれません)。
普通に “http://…” ならばアクセスできるのですが、Redmine のためだけに抜け道を用意するのは、躊躇(ためら)われます。
社員に何の悪気がなくても、その抜け道を使ってしまえば、悪意のある盗聴者に重要なファイルが漏れる恐れがあるからです。
解決策
解決策は非常に簡単でした。
Redmine に リポジトリ の設定をする際には、http 以外にも file や svn といったプロトコルを使って URL 指定をすることができます。
svn プロトコルは、svnserve というプロセスが動いていないといけないのですが、 file はファイルアクセスができればOKです。
我がITPKの社内サーバでは、Redmine が動いているマシンに、Subversion リポジトリの実体があるので、もちろんファイルアクセス可能です。
なので、 file:///var/lib/svn/[リポジトリ名]/ を指定することで、SSL通信だけに制限しても、Redmine からリポジトリアクセスできます。
もちろん、Redmine はローカルファイルアクセスをしているだけなので、盗聴の恐れもありません。