Acabou que havia um certificado repetido na cadeia. O openssl não se importa com isso, mas o gnutls faz - e o svn usa o gnutls (assim como o LDAP e o mutt, caso eles sejam o seu problema). Aqui está o comando gnutls-cli
(pelo menos para sistemas Ubuntu / Debian):
$ gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p 443 www.aptivate.org
Embora você possa ver a corrente com gnutls ou openssl. Na saída do openssl acima, você pode ver que existe um certificado repetido.
Certificate chain
0 s:/O=*.aptivate.org/OU=Domain Control Validated/CN=*.aptivate.org
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287
1 s:/O=*.aptivate.org/OU=Domain Control Validated/CN=*.aptivate.org
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287
2 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287
i:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
3 s:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
i:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//[email protected]
4 s:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//[email protected]
i:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//[email protected]
Para que gnutls valide isso, o i:
(emissor) de cada item na cadeia deve corresponder ao s:
(assunto) do próximo item.
Neste caso eu coloquei o certificado em seu próprio arquivo, e coloquei no arquivo chain. Portanto, 0i
não correspondeu a 1s
. Isso foi o suficiente para fazer o svn rejeitar o certificado.
Qualquer ordenação incorreta causa esse problema. Então, se você tivesse 2 e 3 o caminho errado, você teria erros de validação.