2012-07-25 65 views
0

我正在尝试使用SharpSvn访问Subversion存储库。该存储库只能通过https访问,并且该机器使用自己的私人证书颁发机构(不要担心这里的安全性,我相信授权机构)。如何在SharpSvn中使用自定义证书颁发机构而不安装证书

我有证书颁发机构的公共根证书,但是由于用户访问权限,我无法将证书安装到证书存储区。

如果我直接使用颠覆,我可以添加:

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

或者作为命令线对象或配置文件。

如何在SharpSvn中设置这些选项,以便我可以使用cacert.crt文件,以便在尝试访问我的存储库时不会出现“证书验证失败”,而且我不必忽略错误?

非常感谢

+0

我当然只有解决了这个曾经注册和发布的问题。我通过调用SvnClient.Configuration.SetOption()函数解决了这个问题。我会发布一个完整的答案,并将其标记为尽快解决(等待8个小时,然后我可以自己回答,因为我是新来的) – benmichael 2012-07-25 15:19:53

+0

欢迎来到[so],我们一直期待着你。如果您有安装权利可以解决问题?我继续碰到这个:http://sharpsvn.open.collab.net/ds/viewMessage.do?dsForumId=728&dsMessageId=243704 – 2012-07-26 03:13:34

+0

我在搜索过程中遇到过这种情况。此处列出的问题与自签名证书有关,未由证书颁发机构签名。为了解决这个问题,你必须忽略失败错误或告诉svn信任证书。在我的问题中,我有一个由CA签名的证书,但不受信任的CA.我有CA的公钥,并试图让SharpSvn使用它,因为我知道可以通过颠覆来完成。如果我有权限安装到证书存储区,那么我可以做到这一点,并且颠覆本来就可以实现。请参阅下面的答案以获取解决方案。 – benmichael 2012-07-28 15:20:22

回答

1

它是如何,它问你,你知道答案的问题后才是?

我解决了这个通过设置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"); 

道歉的自我帮助,希望它有助于下一个人。

+0

另一种选择是通过在_svnClient.Authorization对象上挂上适当的事件来接受证书。 – 2012-08-21 16:43:28

0

扩展在伯特Huijben(上图)的评论:

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 
} 
相关问题