Problema al verificar el certificado del servidor en checkServerTrusted
Me estoy refiriendoValidar el certificado X.509 contra CA en Java esta publicación.
Mi implementación 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);
}
}
El archivo domain.crt se exporta desde el navegador después de abrir el sitio web. la ruta del certificado parece.
Si abro este archivo en el bloc de notas solo unoBEGIN CERTIFICATE
yEND CERTIFICATE
es así que no es una cadena de certificados.
Si depuro código entonces, enfor
loop @ LOCcert.verify(Mycert.getPublicKey());
en el primer certificado cert [0] obtuve una excepción comojava.security.SignatureException: Signature does not match.
¿Dónde estoy haciendo mal?