svn не примет сертификат, хотя s_client делает - PullRequest
1 голос
/ 03 ноября 2010

При запуске svn на нашем сервере svn я получаю эту ошибку (имя домена и отпечаток пальца отредактированы):

Error validating server certificate for 'https://svn.example.org:443':
  - The certificate has expired.
  - The certificate has an unknown error.
Certificate information:
  - Hostname: mail.example.org
  - Valid: from Fri, 24 Sep 2010 13:05:10 GMT until Wed, 09 Feb 2011
15:24:52 GMT
  - Issuer: 07969287, http://certificates.godaddy.com/repository,
GoDaddy.com, Inc., Scottsdale, Arizona, US
  - Fingerprint: 00:e5:....
(R)eject or accept (t)emporarily? t

Итак, одна ошибка говорит, что она истекла, а через несколько строк - истечение срока действия.дата 2011 года. И тут возникает неизвестная ошибка.Это svn 1.6 - более старые версии имели опцию перманентного принятия.

Я также пытался запустить openssl s_client для проверки сертификата:

openssl s_client -host svn.example.org -port 443 -verify 5 -CApath /etc/ssl/certs

И среди других выводов, которые я получаю:

New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 7604...
    Session-ID-ctx: 
    Master-Key: 22AB...
    Key-Arg   : None
    Compression: 1 (zlib compression)
    Start Time: 1288804434
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

Что говорит о том, что SSL настроен правильно.

Единственное, о чем я могу думать, это то, что мы используем многодоменный сертификат, где mail.example.org являетсяТема CN и svn.example.org перечислены в разделе subjectAltName.

Это затрагивает многих людей, и я не хочу, чтобы наши клиенты сталкивались с этим, поэтому я бы очень хотелрешение, которое устраняет эту ошибку, а не просто исправляет ее для меня.Любая помощь приветствуется.

Редактировать: Я могу загрузить https://svn.example.org/ в свой веб-браузер, и он не жалуется.Я могу просматривать иерархию сертификатов через веб-браузер, и ни один из сертификатов в цепочке не истек.

Я проверил ldd svn, как предложено Бруно, и он связан с libgnutls, в то время как openssl связанпротив libssl.Есть ли эквивалент команды s_client, использующей libgnutls?

Edit2: (так что его легко найти для более поздних людей).svn использует библиотеку gnutls, а не библиотеку ssl, и gnutls более строг, чем ssl.Поэтому, чтобы увидеть ошибку, вам нужно использовать gnutls-cli.В моем случае гнутам не понравился порядок сертификатов , хотя они все есть.См. Ссылку ранее для получения более подробной информации.

1 Ответ

1 голос
/ 03 ноября 2010

Я не уверен, что это решит вашу проблему, но есть опция ssl-authority-files, которую вы можете настроить в ~/.subversion/servers (вы можете ограничить ее определенными хостами, если хотите, я думаю).

Кроме того, возможно, что ваша версия svn связана с другой библиотекой, отличной от OpenSSL для ее стека SSL / TLS, например, GnuTLS (это должно быть видно при использовании ldd в двоичном файле svn).

(Вы проверили, истек ли срок действия сертификата CA, а не самого сертификата сервера?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...