2012-07-25 27 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 
} 
相關問題