Les certificats de serveur ne sont pas correctement validés par subversion / openssl

2

J'ai remarqué que le svn cli ne parvient pas à valider les certificats https et demande toujours une validation manuelle à l'aide de l'empreinte du certificat:

mbp:~ user$ svn co https://svn.mysite.com/svn/testrepo
Error validating server certificate for 'https://svn.mysite.com:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: svn.mysite.com
 - Valid: from Fri, 21 Jun 2013 00:00:00 GMT until Mon, 20 Jun 2016 23:59:59 GMT
 - Issuer: ANISSUER, DE
 - Fingerprint: 37:7d:6a:a7:e9:4c:30:57:fe:45:32:ab:bb:71:6c:79:08:4d:72:0d

Tous les clients suivants ont pu valider le certificat de mon propre serveur svn ainsi que celui d'un serveur sf.net :

  • svn cli sous Linux
  • TortoiseSVN sur Windows
  • Safari / Firefox / Chrome sur OSX

Les deux versions de svn cli que j'ai essayées sur OSX (Mountain Lion) et que je n'ai pas pu valider les certificats sont les suivantes:

  • /usr/bin/svn: 1.6.18 (r1303927) - Lion de montagne / Xcode
  • /opt/homebrew/bin/svn: 1.7.9 (r1462340) - Compilé avec homebrew

Y a-t-il un moyen de contourner ce problème?

m000
la source
Je suppose que le problème est dû au fait que la svn cli ne peut pas récupérer les certificats racine approuvés par le système d'exploitation. Celles-ci sont stockées dans /etc/ssl/certsDebian, mais je n'ai aucune idée de leur localisation dans OSX.
M000

Réponses:

2

Un ami (qui était trop paresseux pour écrire la réponse ici) m'a laissé entendre que les certificats racine sous Mac OSX sont stockés dans le trousseau et a suggéré deux façons différentes de résoudre le problème.

Afin de créer la bibliothèque openssl (utilisée par svn) pour les localiser, vous devez les exporter manuellement et les stocker /System/Library/OpenSSL/cert.pm. Le processus est décrit étape par étape dans l'article de blog suivant: http://jw35.blogspot.gr/2011/02/root-certificates-for-macos-openssl.html

Si vous utilisez homebrew , une autre solution consiste à installer curl-ca-bundlepackage et pointer openssl sur l'emplacement des certificats à l'aide d'une variable d'environnement.

brew install curl-ca-bundle
echo "export SSL_CERT_FILE=$(brew --prefix)/opt/curl-ca-bundle/share/ca-bundle.crt" >> ~/.bashrc
m000
la source
1
Cela a fonctionné pour moi, mais vous devez non seulement déposer le fichier PEM dans, /System/Library/OpenSSL/cert.pmmais vous devez également créer un fichier appelé [hash].0contenant les mêmes données (ou, mieux encore, créer un lien symbolique). Le [hash]est le hachage du certificat que vous pouvez obtenir en exécutant openssl x509 -hash -noout -in /System/Library/OpenSSL/cert.pem. Cela devrait vous donner un code de 8 caractères que vous pouvez utiliser pour le nom de fichier de votre lien symbolique (par exemple 238dba32.0, où le .0est ajouté à la table de hachage pour créer le nom de fichier final).
Christopher Schultz