gadamiak
2013-06-13 17:02:16 UTC
Hi,
My Subversion repositories running under Apache 2.2.22 on Ubuntu Server 12.04 amd64 can't be accessed any more with TortoiseSVN above 1.7.6 (and CLI SVN) when client certificate authentication is required. The connection fails leaving almost no trace in Apache logs:
~~~
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read client hello A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write server hello A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write certificate A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write key exchange A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write certificate request A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 flush data
[debug] ssl_engine_io.c(1908): OpenSSL: I/O error, 5 bytes expected to read on BIO#7f8df0001340 [mem: 7f8df8006c73]
[debug] ssl_engine_kernel.c(1903): OpenSSL: Exit: error in SSLv3 read client certificate A
[debug] ssl_engine_kernel.c(1903): OpenSSL: Exit: error in SSLv3 read client certificate A
~~~
Strangely the same setup works fine when client certificate authentication is switched off. The server and client certificates are issued by a self-signed CA. The CA chain is:
Primary CA
→ Intermediate server CA → server certificates
→ Intermediate user CAs → user certificates
The same setup has been running for almost 4 years without any problems till TSVN 1.7.6 using OpenSSL 1.0.0g. Later TSVN versions use OpenSSL 1.0.1x with 1.0.1e being the latest. The same happens despite HTTP library being used (errors from CLI svn client shipped with latest TSVN 1.7.13):
* Neon 0.29.6 returns error:
~~~
svn: E175002: Unable to connect to a repository at URL 'https://...'
svn: E175002: OPTIONS of 'https://...': SSL handshake failed: SSL error: unsupported algorithm nid (https://...)
~~~
* Serf (don't know the version) returns error:
~~~
svn: E120171: Unable to connect to a repository at URL 'https://...'
svn: E120171: Error running context: APR does not understand this error code
~~~
Where is the source of the problem?
I know there have been changes in OpenSSL 1.0.1 handling of self-signed certificates. Is this related? If so, what has to be changed/added to user certificates to make them work? Or are Neon and Serf libraries failing?
Definitely need help with that. Thanks.
My Subversion repositories running under Apache 2.2.22 on Ubuntu Server 12.04 amd64 can't be accessed any more with TortoiseSVN above 1.7.6 (and CLI SVN) when client certificate authentication is required. The connection fails leaving almost no trace in Apache logs:
~~~
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read client hello A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write server hello A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write certificate A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write key exchange A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 write certificate request A
[debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 flush data
[debug] ssl_engine_io.c(1908): OpenSSL: I/O error, 5 bytes expected to read on BIO#7f8df0001340 [mem: 7f8df8006c73]
[debug] ssl_engine_kernel.c(1903): OpenSSL: Exit: error in SSLv3 read client certificate A
[debug] ssl_engine_kernel.c(1903): OpenSSL: Exit: error in SSLv3 read client certificate A
~~~
Strangely the same setup works fine when client certificate authentication is switched off. The server and client certificates are issued by a self-signed CA. The CA chain is:
Primary CA
→ Intermediate server CA → server certificates
→ Intermediate user CAs → user certificates
The same setup has been running for almost 4 years without any problems till TSVN 1.7.6 using OpenSSL 1.0.0g. Later TSVN versions use OpenSSL 1.0.1x with 1.0.1e being the latest. The same happens despite HTTP library being used (errors from CLI svn client shipped with latest TSVN 1.7.13):
* Neon 0.29.6 returns error:
~~~
svn: E175002: Unable to connect to a repository at URL 'https://...'
svn: E175002: OPTIONS of 'https://...': SSL handshake failed: SSL error: unsupported algorithm nid (https://...)
~~~
* Serf (don't know the version) returns error:
~~~
svn: E120171: Unable to connect to a repository at URL 'https://...'
svn: E120171: Error running context: APR does not understand this error code
~~~
Where is the source of the problem?
I know there have been changes in OpenSSL 1.0.1 handling of self-signed certificates. Is this related? If so, what has to be changed/added to user certificates to make them work? Or are Neon and Serf libraries failing?
Definitely need help with that. Thanks.