2012-07-25 2 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

+0

[so]에 오신 것을 환영합니다. 우리는 당신을 기대하고 있습니다. 설치 권한이 있다면 문제가 해결됩니까? 나는이 문제를 계속 지키고있다. http://sharpsvn.open.collab.net/ds/viewMessage.do?dsForumId=728&dsMessageId=243704 –

+0

나는 내 수색 도중에 그것을 발견했다. 여기에 나열된 문제는 인증 기관에서 서명하지 않은 자체 서명 인증서에 대한 것입니다. 이 문제를 해결하려면 실패 오류를 무시하거나 svn에게 인증서를 신뢰하도록해야합니다. 내 문제는 CA가 서명 한 인증서가 있지만 신뢰할 수없는 CA입니다. 나는 CA의 공개 키를 가지고 있었고 SharpSvn이 그것을 사용하도록하려고 시도했다. 내가 알고있는 것처럼 전복으로 할 수있다. 인증서 저장소에 설치할 수있는 권한이있는 경우이를 수행 할 수 있었고 Subversion은 즉시 사용할 수있었습니다. 솔루션에 대한 아래 내 대답을 참조하십시오. – benmichael

답변

1

어떻게 그것이 당신이 대답을 실현 질문을 한 후에 만 ​​점이다? 셀프 도움말에

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

사과를이 다음 사람을 도움이되기를 바랍니다 :

나는 등의 SvnClient 개체의 구성 옵션을 설정하여이 문제를 해결했다.

+0

또 다른 옵션은 _svnClient.Authorization 개체에서 적절한 이벤트를 연결하여 인증서를 수락하는 것입니다. –

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 
}