Estou com problema para conectar via https que necessita tanto de certificado do lado do cliente qto do servidor, estou usando HTTPClient do pacote commons da apache.
Já utilizei a keytool para importar a chave que foi registrada no servidor no arquivo e configuração de certificados do java (JAVA_HOME/certs)
“Certificate chaining error: issuer DN != subject DN”
para verificar se isso é realmente um erro de “chaining”, experimente importar todos os certificados X.509 no seu browser de sua preferência, e veja se há algum problema com a cadeia de certificação.
Se você não conseguir formar a cadeia desde a autoridade certificadora até o seu certificado, você terá problemas.
Veja se no Keystore do Java que roda a aplicação server existe um “trusted cert” que corresponde à autoridade certificadora que emitiu o certificado client. Pode ser que não exista o certificado, ou ele esteja já expirado (por exemplo, existe um certificado da Verisign (“Class 3”) na versão 1.4.1 que estava expirado, e foi substituído só na versão 1.4.2_05.
Pode ser também que você esteja usando uma versão velha do JDK, se for possível atualize ambas as partes para 1.4.2_07. Um cliente meu teve um problema semelhante com certificados (ele queria usar um web service do Itaú que rodava em https (SSL), mas estava rodando JDK 1.4;1 e o certificado do Itaú justamente tinha sido emitido pela Verisign Class 3, e a conexão não fechava de jeito nenhum. Foi resolvido alterando-se para JDK 1.4.2_05.)
Luca
Olá
Descreva com mais detalhes tudo o que fez.
Não é comum ver aplicações que necessitam tanto de certificado do lado do cliente qto do servidor. Até hoje eu nunca vi e gostaria de saber em quais casos está usando. Sei que existe pois li no livro do Rescorla e lá diz que serve para restringir o acesso de alguns serviços somente a alguns clientes. Devem haver outros casos.