Após algumas pesquisas, tenho uma ideia melhor do que está acontecendo (mas ainda não há solução).
Eu encontrei o código-fonte do apt no link . Ele usa libcurl para ssl, que por sua vez usa gntls.
A mensagem de erro vem do libcurl e está reclamando sobre a chave / senha, não o certificado da CA. A linha:
* found 1 certificates in /opt/CA.crt
está dizendo que o CA.crt foi carregado corretamente. A mensagem de erro é a seguinte:
if(gnutls_certificate_set_x509_key_file(
conn->ssl[sockindex].cred,
data->set.str[STRING_CERT],
data->set.str[STRING_KEY] ?
data->set.str[STRING_KEY] : data->set.str[STRING_CERT],
do_file_type(data->set.str[STRING_CERT_TYPE]) ) !=
GNUTLS_E_SUCCESS) {
failf(data, "error reading X.509 key or certificate file");
return CURLE_SSL_CONNECT_ERROR;
}
(De gtls.c em link )
O problema está na senha associada a essa chave. Eu tirei a senha da chave usando:
$ openssl rsa -in user.key -out user-nopasswd.key
Isso não é ideal, mas parece funcionar.