Como faço para usar uma autoridade de certificação personalizada no SharpSvn sem instalar o certificado
-
11-12-2019 - |
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
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
}