svn_SSL
svn.exeでクライアント証明書を利用
https経由でSubversionリポジトリにアクセスする際に、クライアント証明書を要求するようにした場合のメモ。Apacheの設定でhttpによるアクセスを拒絶し、かつクライアント証明書を要求するようにすることで、許可していない人のアクセスを極力防ぐことが可能になる・・・はずです(もちろん、クライアント証明書の管理には気をつける必要がありますが、ID/PWのみの制御に比べて(クラックの)敷居は高くなっているはずです)。
svn.exeでアクセス
クライアント証明書の指定
クライアント証明書が必要となるところへアクセスする際に、以下のような感じでクライアント証明書のパス入力メッセージが表示されます(環境によっては英語で表示される場合もあります)。
C:\Temp>svn checkout https://testsvr:8443/svn/Test Repos2
認証領域: https://testsvr:8443
クライアントの証明書ファイル名:
作成したクライアント証明書(ファイル名:newcert.p12)を例えばC:\Tempフォルダにコピーしたとした場合はC:\Temp\newcert.p12のような感じで入力すると、そのエクスポートパスワードの入力メッセージが表示されます。
C:\Temp>svn checkout https://testsvr:8443/svn/Test Repos2
認証領域: https://testsvr:8443
クライアントの証明書ファイル名: C:\Temp\newcert.p12
'C:\Temp\newcert.p12' のパスフレーズ:
サーバ証明書の確認
ちなみに、サーバ証明書そのものが「信頼済み」のものでない場合は、続いて以下のような感じのメッセージが表示されます。
'https://testsvr:8443' のサーバ証明書の認証中にエラーが発生しました:
- 証明書は信頼のおける機関が発行したものではありません。証明書を手動で認証
するためにフィンガープリントを用いてください!
証明書情報:
- ホスト名: testsvr
- 有効範囲: Sat, 10 Mar 2007 19:24:09 GMT から Sun, 09 Mar 2008 19:24:09 GMT まで
- 発行者: TestCASection, TestCACompany, Osaka, JP
- フィンガープリント: 6d:a8:df:7f:62:a4:fe:23:86:7d:22:44:94:df:f1:e2:4d:48:4f:22
拒否しますか (R)、一時的に承認しますか (t)、常に承認しますか (p)?
まぁ、IE等でアクセスした場合に表示される証明書の警告ダイアログと同じ内容ですね。自分で作成した証明書であるということがはっきりしているのであれば、(p)で問題ないかと思います。それ以外の場合はケースバイケースですが・・・そもそも、IEでページを見るような場合(あるリンクをクリックしたらその先が信頼できない証明書を使用していた)と異なり、あえて「信頼していない」ところへたまたま(偶然?)アクセスしてしまう可能性は低いような気もしますが。
なお、(p)で「常に信頼する」とした場合、その内容は
C:\Documents and Settings\(username)\Application Data\Subversion\auth\svn.ssl.serverフォルダ内にストアされます。そのファイルを削除してしまうと、再度上記のサーバ証明書確認メッセージが表示されるようになります。
Basic認証
アクセス先のリポジトリにおいて、Basic認証を要求するように設定されていた場合は、続いて認証メッセージが表示されます。以下のような感じで然るべきユーザ名&パスワードを入力すると、リポジトリへのアクセスが完了するはずです。
認証領域: <https://testsvr:8443> Subversion Repository
ユーザ名: testuser
'testuser' のパスワード: **********
A Repos2\TestFolder
リビジョン 1 をチェックアウトしました。
これはCheckOutの操作を行った場合の例ですが、UpdateやCommit等も同様の動きとなります。Basic認証のユーザ名・パスワードは特に何も指定しなければキャッシュされ、その内容は
C:\Documents and Settings\(username)\Application Data\Subversion\auth\svn.simpleフォルダ内に格納されます。
証明書の設定を保存
毎回クライアント証明書のパスを入力したり、パスワードを入力したりするのが面倒な場合、情報を覚えさせておくことが可能です。ただ、パスの登録はともかく、パスワードの登録はセキュリティを下げることにつながるので(覚えさせるかどうかは)慎重に判断する必要があるかと思います。
ファイルへ記憶
C:\Documents and Settings\(username)\Application Data\Subversion\servers
ファイルにクライアント証明書のパス・パスワードを記述することが可能です。ざっくりと設定部分だけを取り出すと、以下のような感じ。
[groups]
testgroup = testsvr
[testgroup]
ssl-client-cert-file=C:\DownloadFiles\apache\newcert.p12
ssl-client-cert-password=(password)
設定内容の詳細に関しては、Subversionのマニュアルの第7章 より進んだ話題に記載されています。
レジストリへ記憶
2007年03月12日(月) 08:22:53 Modified by syo1976