うまくできませんでした。
Proxyサーバに阻まれているんだけどどうしよう? を見ると、以下のような記述があります。
"別の戦略としては、SSL上でチェックアウトする、というのもあって、多くのプロキシがこれを許可している。"ということで、 、Apache を https 化することにしました。
結論としては、SSL にすれば proxy 経由でも正常に subversion に接続することができました!
接続イメージ以下のような感じです。
外部PC --> proxy --> インターネット --> 自宅ルータ --> 自宅PC(Apache+SSL+subversion)
※ 自宅PCの環境は Windows Vista Ultimate SP2 32bit です。
以下に、OpenSSL 付の Apache の導入手順をメモしておきます。
- Apache 2.2.17 (OpenSSL付) ダウンロード
Apache は以下のサイトより、
httpd-2.2.17-win32-x86-openssl-0.9.8o.msi をダウンロードしました。
http://httpd.apache.org/download.cgi
- 既存の Apache 2.2.16 (OpenSSL無) をアンインストール
- Apache 2.2.17 (OpenSSL付) インストール
httpd-2.2.17-win32-x86-openssl-0.9.8o.msi を実行。
手順は Apache 2.2.16 (OpenSSL無) と変わりません。
詳細は Subversion & Apache & subclipse の導入 の "4. Apache のインストール" を参照。
※ httpd.conf は 2.2.16 アンインストール後も残っています。
さらに、2.2.17 インストール後も残っているので、2.2.16 時点のものが、
そのまま利用できました。
- 秘密鍵の作成
コマンド・プロンプトを管理者として実行し、以下を実行。
<Apache導入先>\conf\server.key を作成します。
C:\> cd C:\Program Files\Apache Software Foundation\Apache2.2\bin
C:\Program Files\Apache Software Foundation\Apache2.2\bin> openssl.exe genrsa -des3 1024 > ..\conf\server.key
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
............++++++
..................++++++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
C:\Program Files\Apache Software Foundation\Apache2.2\bin>
- CSRの作成
<Apache導入先>\conf\server.csr を作成します。
C:\Program Files\Apache Software Foundation\Apache2.2\bin> openssl.exe req -config ..\conf\openSSL.cnf -new -key ..\conf\server.key > ..\conf\server.csr
Enter pass phrase for ..\conf\server.key:
Loading 'screen' into random state - done
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Fukuoka
Locality Name (eg, city) []:Fukuoka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:rtaki
Organizational Unit Name (eg, section) []:rtaki
Common Name (eg, YOUR name) []:rtaki
Email Address []:hoge@123.abc.co.jp
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:riverfall
An optional company name []:rtaki
C:\Program Files\Apache Software Foundation\Apache2.2\bin>
- サーバー証明書の作成
<Apache導入先>\conf\server.crt を作成します。
C:\Program Files\Apache Software Foundation\Apache2.2\bin> openssl.exe x509 -in ..\conf\server.csr -days 1000 -req -signkey ..\conf\server.key > ..\conf\server.crt
Loading 'screen' into random state - done
Signature ok
subject=/C=JP/ST=Fukuoka/L=Fukuoka/O=rtaki/OU=rtaki/CN=rtaki/emailAddress=hoge@123.abc.co.jp
Getting Private key
Enter pass phrase for ..\conf\server.key:
C:\Program Files\Apache Software Foundation\Apache2.2\bin>
- httpd.conf の編集
SSLモジュールを有効化するために、httpd.conf にて、以下の行を有効化します。
LoadModule ssl_module modules/mod_ssl.so
さらに、SSL設定ファイル(以下の行)を有効化します。
Include conf/extra/httpd-ssl.conf
<Apache導入先>\conf\extra\httpd-ssl.conf は編集不要です。
念のため、SSLCertificateFile と SSLCertificateKeyFile が、
項番 4. と 6. で作成したファイルになっていることを確認しておきます。
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key"
- Apache 起動エラーの回避
<Apache導入先>\conf\extra\server.key を server.key_bk にリネームし、以下を実行します。
C:\Program Files\Apache Software Foundation\Apache2.2\bin> openssl.exe rsa -in ..\conf\server.key_bk -out ..\conf\server.key
Enter pass phrase for ..\conf\server.key_bk:
writing RSA key
C:\Program Files\Apache Software Foundation\Apache2.2\bin>
これを実行しないと Apache が起動に失敗し、<Apache導入先>\log\error.log に以下のエラーが記録されます。
SSLPassPhraseDialog builtin is not supported on Win32 (key file C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key)
- 設定の反映
httpd.conf の修正の修正を反映するために、Apache サービスを再起動します。
「コントロールパネル」→「管理ツール」→「サービス」より、Apache 2.2 を再起動します。
- 接続確認
ブラウザを起動し、https://localhost/ として、It works! と表示されること確認します。
その際に、証明書に関する警告が表示されますが、無視して、
「このサイトの閲覧を続行する (推奨されません)。」を選択します。(IE8の場合)
IE8 以外でも同様の画面が表示されるので、無視しましょう。
オレオレ証明書(自分で作った証明書)なので仕方がないです。
subclipse で最初に接続する際も、以下のように同じような警告が表示されます。
Error validating server certificate for https://xxx~「永久に承諾」としておきましょう。
- Unkown certificate issuer
以上、https版Apacheの完成です。ヾ(〃^∇^)ノわぁい♪