Como faço para usar uma autoridade de certificação personalizada no SharpSvn sem instalar o certificado

StackOverflow https://stackoverflow.com//questions/11652229

Pergunta

Estou tentando acessar um repositório Subversion usando SharpSvn.O repositório só está disponível via https e a máquina usa sua própria autoridade de certificação privada (não se preocupe com a segurança aqui, eu confio na autoridade).

Tenho o certificado raiz público da Autoridade de Certificação; no entanto, devido aos direitos de acesso do usuário, não consigo instalar o certificado no armazenamento de certificados.

Se eu usar o subversion diretamente, posso adicionar:

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

como objetos de linha de comando ou para o arquivo de configuração.

Como defino essas opções no SharpSvn para que eu possa usar o arquivo cacert.crt para não receber "falha na verificação do certificado" quando tento acessar meu repositório e não preciso simplesmente ignorar o erro?

Muito obrigado

Foi útil?

Solução

Como é que só depois de fazer a pergunta é que você percebe a resposta?

Resolvi isso definindo as opções de configuração no objeto SvnClient da seguinte forma:

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

Desculpas pela autoajuda, espero que ajude a próxima pessoa.

Outras dicas

Expandindo o comentário de Bert Huijben (acima):

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
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top