web-dev-qa-db-fra.com

davfs - Échec de la négociation SSL: Erreur SSL: échec de la négociation de l'alerte sslv3

J'essaie de monter un WebDAV (OwnCloud) distant en utilisant https sur ma machine Ubuntu 12.04.

J'exécute cette commande et elle me demande un nom d'utilisateur et un mot de passe

Sudo mount -t davfs -o uid=ne,gid=users https://example/owncloud/remote.php/webdav/ /mount/remote

J'ai alors l'erreur

/sbin/mount.davfs: le montage a échoué. Échec de l'établissement de la liaison SSL: Erreur SSL: échec de l'établissement de la liaison avec l'alerte sslv3

D'autres machines (y compris Android) peuvent se connecter correctement à WebDAVS.

Comment puis-je prévenir cette erreur? Le certificat est signé par CloudFlare, si cela fait une différence - mais cela ne semble pas poser de problème pour les autres systèmes accédant à l'instance OwnCloud.

Courir curl -v https://example.com tout semble aller bien

* About to connect() to example.com port 443 (#0)
*   Trying 104.28.29.14... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-ECDSA-AES128-SHA
* Server certificate:
*    subject: OU=Domain Control Validated; OU=PositiveSSL Multi-Domain; CN=sni29581.cloudflaressl.com
*    start date: 2014-10-26 00:00:00 GMT
*    expire date: 2015-09-30 23:59:59 GMT
*    subjectAltName: example.com matched
*    issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO ECC Domain Validation Secure Server CA 2
*    SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: example.com
> Accept: */*
> 
< HTTP/1.1 302 Moved Temporarily
< Server: cloudflare-nginx
< Date: Mon, 27 Oct 2014 11:30:08 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=da7fc86a1e00780f7eea162120e2c4fe51414409408265; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.example.com; HttpOnly
< Set-Cookie: DYNSRV=lin194; path=/
< CF-RAY: 17fe8f51aaa71365-LHR
< 
* Connection #0 to Host example.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):

J'ai aussi essayé openssl s_client -Host example.com -port 443 mais cela me donne Verify return code: 20 (unable to get local issuer certificate)

CONNECTED(00000003)
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Organization Validation CA - G2
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=CA/L=San Francisco/O=CloudFlare, Inc./CN=ssl2000.cloudflare.com
   i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2
 1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
(truncated)
bJLtKDaYbNmULxY=
-----END CERTIFICATE-----
subject=/C=US/ST=CA/L=San Francisco/O=CloudFlare, Inc./CN=ssl2000.cloudflare.com
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2
---
No client certificate CA names sent
---
SSL handshake has read 3158 bytes and written 363 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : ECDHE-RSA-AES128-SHA
    Session-ID: EAC9072E6FFBD3E7AEA20B6C4D57F229DCC887CFAB08C2D47C0A546318A794E0
    Session-ID-ctx: 
    Master-Key: 50ED2846908537665D348FCB07BB69ACEAD182F062F8235E5C7ED4958B4D446D70701E4C6876DE2DA06322BA090C46D5
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 64800 (seconds)
    TLS session ticket:
    0000 - f1 98 d3 dc 67 02 22 1f-24 88 b7 dc 1c 1a 13 6a   ....g.".$......j
    (truncated)
    Start Time: 1414409459
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)

J'ai essayé de mettre à jour le dernier libneon mais cela n'a pas changé.

Mise à jour

Depuis la mise à jour vers la dernière version d'OpenSSL, une erreur différente s'affiche

La négociation SSL a échoué: alerte SSL reçue: la négociation a échoué

Comme suggéré ailleurs, exécuter openssl s_client -Host example.com -port 443 -ssl3 renvoie:

Vérifiez le code retour: 0 (ok)

J'ai compilé et installé libneon 30.1

./configure --prefix=/usr --enable-shared --with-ssl=openssl --disable-static

mais l'erreur persiste.

3
Terence Eden

Bon, voici ce que j'ai fait!

Saisissez libneon 30.1 - et extrayez-le dans un répertoire.

Compiler

./configure --prefix=/usr --enable-shared --with-ssl=openssl --disable-static
make
Sudo make install

Nous devons maintenant remplacer l'ancien libneon-gnutls.so - et nous voulons que le résultat final ressemble à

/usr/lib/libneon-gnutls.so.27 -> /usr/lib/libneon.so.27
/usr/lib/libneon.so -> libneon.so.27.3.1
/usr/lib/libneon.so.27 -> libneon.so.27.3.1

Commencez par sauvegarder l'ancienne version. Sudo mv /usr/lib/libneon-gnutls.so.27 /usr/lib/libneon-gnutls.so.27.old

Ensuite, dans /usr/lib/

Sudo ln -s /usr/lib/libneon.so.27.3.1 libneon.so.27 
Sudo ln -s /usr/lib/libneon-gnutls.so.27.3.1 libneon.so 
Sudo ln -s /usr/lib/libneon.so.27 libneon-gnutls.so.27

Cela a tout fait fonctionner!

1
Terence Eden