August 12, 2009

Redmineに対してオレオレ証明書httpsのsubversionを認めさせる

複数の作業を効果的にこなすために、Redmineというプロジェクト管理ツールを導入しているのですが、このツールはソースコードを管理するためのSubversionやgitといった別のツールと連動することが可能です。この仕組みはとても便利で、例えば、Subversionでコミットする際のコメントに、Redmine側で発行したチケット(ToDoリストのようなもの)の番号を記載しておくと、Redmine側であるチケットに対してどれだけコードが変わったか、ということをうまいこと紐付けしてくれてます。

僕がこれまで作ったRedmineは、同じサーバ上でRedmineとSubversionを動かし、Redmine側からローカルディスクのSubversionを叩くという構成でした。ところが最近、新たに外部に作られたhttpsベースのSubversionリポジトリを取り込む必要がでてきたため、表題のような問題を解決する必要がでてきました。

問題が発覚するにいたったのは、RedmineでhttpsのSubversionリポジトリを登録したときのことでした。リポジトリを見ようとすると『リポジトリが見つからない』とのエラーがでます。入力したURLでブラウザからリポジトリを見ることができたので、どうやらRedmineがあやしいようでした。コードを追うこと、どうやら証明書がらみのエラーでした。

これはhttpsで公開されているSubversionをコマンドsvnで叩くと、その証明書が怪しい場合にユーザの許可を求めてくることと関連しているようでした。証明書が怪しい、というのは、証明書がVerisignのような一般的に認知されている機関から発行されているのではなく、例えば自分で自分を認証しているオレオレ証明書(apacheのインストールの際によく作るsnake oilのアレ)のようなものです。

Subversionのコマンドsvnでアクセスする際は証明書が怪しくとも、それを認めるかどうかたずねられるのは初回のみで、その認否については次回以降は .subversion/auth/svn.ssl.server/ ディレクトリに情報がキャッシュされます。Redmineから叩かれるSubversionもそのような仕様に変更してみれば、この問題は回避できそうでした。

で、本題の問題解決方法ですが、パッチ redmine.svn_https.patchを作りました。このパッチを適用した後、目的のhttpsリポジトリをsvnコマンドで一度認めた上で.subversionディレクトリをRedmineのルートディレクトリにコピー、Redmineを再起動してください。これでうまくいきました。

15:56 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/716
コメント

自分のところでも、ちょうどオレオレ証明書で同じ問題にぶつかりました。
有難くこちらのパッチを使わせていただこう・・・と思ったのですが、もう少し調べていたところ、パッチ無しで動かしている方を発見しました。
確かにそれだけで解決するようです。
http://www.xythos.jp/Davlog/?p=375

パッチを当ててしまうとバージョンアップが大変かと思いましたので、老婆心ながらコメントしておきます。

Posted by: 通りすがり : February 10, 2011 05:00 AM

>通りすがりさん
情報ありがとうございます。基本的にサーバに入れっぱなし、バージョンアップはしない、という怠け者なので、こういう情報は大歓迎です!

Posted by: fenrir : February 11, 2011 08:31 PM
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。