web-dev-qa-db-ja.com

Apacheを2.2から2.4にアップグレードした後のSubversionでのSSLエラー

Debianサーバーを安定版からテスト版にアップグレードした後、svnクライアントはSubversionサーバーに接続できなくなります。

Svnクライアントはクライアント証明書を使用して接続する必要があり、SubversionサーバーはApacheでホストされています。 Subversionは1.6.17から1.7.13にアップグレードされました。 Apache2が2.2.22から2.4.6にアップグレードされました。

Svnクライアントは、更新時に次のエラーメッセージを受け取ります。

Updating '.':
svn: E175002: Unable to connect to a repository at URL 'https://myserver/svn/myproject/dev/trunk'
svn: E175002: OPTIONS of 'https://myserver/svn/myproject/dev/trunk': SSL handshake failed: SSL error: An unexpected TLS packet was received. (https://myserver)

Apacheサーバーでは、メッセージは1つだけ表示され、other_vhosts_access.logにあります。

myserver.localdomain:80 127.0.0.1 - - [06/Jan/2014:19:02:57 -0500] "\x16\x03" 400 0 "-" "-"

Subversion仮想ディレクトリの構成は次のとおりです。

<VirtualHost *:443>
   ServerName myservername
   SSLEngine On
   SSLCertificateFile      /etc/Apache2/ssl/myservercert.crt
   SSLCertificateKeyFile   /etc/Apache2/ssl/myservercert.key
   SSLCACertificateFile    /etc/Apache2/ssl/myserver-CA.crt
   SSLVerifyClient require
   SSLVerifyDepth 10
   <Location /svn >
      SSLRequireSSL
      SSLRequire %{SSL_CLIENT_S_DN_C} eq "XX" and %{SSL_CLIENT_S_DN_ST} eq "XX" and %{SSL_CLIENT_S_DN_O} eq "XX" and %{SSL_CLIENT_S_DN_OU} eq "XX"
      DAV svn
      SVNParentPath /root/Subversion/root
      Require valid-user
      AuthType Basic
      AuthName "Subversion Repository"
      AuthUserFile /root/Subversion/.Apache-htpasswd
      AuthzSVNAccessFile /root/Subversion/.Apache-auth
   </Location>
</VirtualHost>

誰かがこの問題を解決するために正しい方向に私を向けることができますか?ありがとう。

2
Chris C.

Apacheを2.2から2.4にアップグレードする場合、sites-enabledの下のファイルリンクは、以前は特定のファイル拡張子を必要としなかった.confで終わる必要があります。

Sites-availableの下のサイト構成ファイル名に拡張子.confがない場合は、名前を変更してから、a2ensitefilenameを実行してsites-enabledに追加します。

たとえば、サイト構成ファイルの名前がMySiteの場合:

cd /etc/Apache2
rm sites-enabled/MySite
cd sites-available
mv MySite MySite.conf
a2ensite MySite
Apache2ctl configtest
Apache2ctl restart

したがって、上記の問題は、Apache2サービスの開始時にサイト構成が取得されなかったことが原因でした。

6
Chris C.

ApacheがHTTPSではなくポート443でHTTPに応答しているのではないかと強く疑っています。 TELNETでポート443に接続し、GET /を実行すると、応答が返されると思われます。そうした場合、Apacheが単純な古いHTTPをリッスンしていることがわかります。

私はDebianの設定方法に精通していないので、どこから探し始めるかを教えてくれません。ポート443で暗号化されていないHTTPを取得している場合は、何らかの理由でサーバーがmod_sslをロードしていない可能性があります。

3
Evan Anderson