Problema na verificação do certificado do servidor em checkServerTrusted
Estou me referindoValidar certificado X.509 em relação à CA em Java esta postagem.
Minha implementação decheckServerTrusted
parece:
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException{
InputStream inStream;
try {
inStream = new FileInputStream("E:\\Desktop\\cert\\domain.crt");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate Mycert = (X509Certificate)cf.generateCertificate(inStream);
inStream.close();
if (certs == null || certs.length == 0 || authType == null
|| authType.length() == 0) {
throw new IllegalArgumentException("null or zero-length parameter");
}
for (X509Certificate cert : certs) {
cert.verify(Mycert.getPublicKey());
}
} catch (Exception e) {
// TODO Auto-generated catch block
throw new CertificateException("error in validating certificate" , e);
}
}
O arquivo domain.crt é exportado do navegador após a abertura do site. caminho do certificado.
Se eu abrir este arquivo no bloco de notas, apenas umBEGIN CERTIFICATE
eEND CERTIFICATE
é a sua, portanto, não é uma cadeia de certificados.
Se eu depurar código, emfor
loop @ LOCcert.verify(Mycert.getPublicKey());
no primeiro certificado cert [0] eu recebi exceção comojava.security.SignatureException: Signature does not match.
Onde estou fazendo errado?