2012-07-25 5 views
0

J'essaie d'accéder à un référentiel subversion à l'aide de SharpSvn. Le référentiel est uniquement disponible via https et la machine utilise sa propre autorité de certification privée (ne vous inquiétez pas de la sécurité ici, je fais confiance à l'autorité).Comment utiliser une autorité de certification personnalisée dans SharpSvn sans installer le certificat?

J'ai le certificat racine public de l'autorité de certification, mais en raison des droits d'accès utilisateur, je ne peux pas installer le certificat dans le magasin de certificats.

Si je subversion directement, je peux ajouter:

servers:global:ssl-authority-files=/path/to/cacert.crt 
servers:groups:myhost=myhostsdns.com 

soit en tant qu'objets ligne de commande ou dans le fichier de configuration. Comment puis-je définir ces options dans SharpSvn afin de pouvoir utiliser le fichier cacert.crt pour éviter que la "vérification du certificat échoue" lorsque j'essaie d'accéder à mon référentiel, et que je n'ai pas à ignorer l'erreur?

Un grand merci

+0

Bien sûr, je ne résolu cette signature une fois et l'affichage de la question. J'ai résolu cela en appelant la fonction SvnClient.Configuration.SetOption(). Je vais poster une réponse complète et la marquer comme résolue dès que possible (8 heures d'attente avant que je puisse répondre moi-même parce que je suis nouveau ici) – benmichael

+0

Bienvenue à [donc], nous vous attendions. Si vous aviez les droits d'installation, cela résoudrait-il le problème? Je ne cesse de croiser cela: http://sharpsvn.open.collab.net/ds/viewMessage.do?dsForumId=728&dsMessageId=243704 –

+0

Je suis tombé dessus pendant ma recherche aussi. Le problème répertorié ici concerne un certificat auto-signé, qui n'est pas signé par une autorité de certification. Pour contourner cela, vous devez ignorer l'erreur d'échec ou dire à svn de faire confiance au certificat. Dans mon numéro, j'avais un certificat signé par une autorité de certification mais l'autorité de certification n'était pas fiable. J'avais la clé publique de l'AC, et j'essayais d'utiliser SharpSvn pour l'utiliser, comme je sais qu'on peut le faire avec subversion. Si j'avais des permissions à installer sur le magasin de certificats, j'aurais pu le faire et Subversion aurait fonctionné hors de la boîte. Voir ma réponse ci-dessous pour la solution. – benmichael

Répondre

1

Comment est-ce que c'est seulement après avoir posé la question que vous vous rendez compte de la réponse?

Je résolu ce problème en définissant les options de configuration de l'objet en tant que tel SvnClient:

SvnClient _svnClient = new SvnClient(); 
_svnClient.Configuration.SetOption("servers", "global", "ssl-authority-files", "/path/to/cacert.crt"); 
_svnClient.Configuration.SetOption("servers", "groups", "myhost", "myhostsdns.com"); 

Toutes mes excuses sur l'auto-assistance, espère que cela aide la personne suivante.

+0

Une autre option consiste à accepter le certificat en accrochant les événements appropriés sur l'objet _svnClient.Authorization. –

0

Expansion sur le commentaire de Bert Huijben (ci-dessus):

client.Authentication.SslServerTrustHandlers += new EventHandler<SharpSvn.Security.SvnSslServerTrustEventArgs>(Authentication_SslServerTrustHandlers); 
void Authentication_SslServerTrustHandlers(object sender, SharpSvn.Security.SvnSslServerTrustEventArgs e) 
{ 
    // Look at the rest of the arguments of E, whether you wish to accept 

    // If accept: 
    e.AcceptedFailures = e.Failures; 
    e.Save = true; // Save acceptance to authentication store 
} 
Questions connexes