【发布时间】:2015-01-28 14:48:14
【问题描述】:
我指的是Validate X.509 certificate against CA in Java这个帖子。
我对@987654323@ 的实现如下:
@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);
}
}
文件 domain.crt 在打开网站后从浏览器中导出。证书路径类似于 。
如果我在记事本中打开这个文件,只有一个 BEGIN CERTIFICATE 和 END CERTIFICATE 是他们的,所以它不是证书链。
如果我调试代码,那么在for loop @ LOC cert.verify(Mycert.getPublicKey()); 在第一个 cert[0] 证书中我得到异常为java.security.SignatureException: Signature does not match.
我哪里做错了?
【问题讨论】:
标签: java x509certificate