如何使用Java中的.cer文件验证证书

时间:2013-04-04 18:21:21

标签: java security java-ee x509certificate public-key-encryption

我正在尝试以下列方式验证使用Java提供给我的证书

        try{
        FileInputStream fr = new FileInputStream(pathtoCertificate);
        CertificateFactory cf =   CertificateFactory.getInstance("X509");
        X509Certificate c = (X509Certificate) 
                            cf.generateCertificate(fr);
        System.out.println("++++Certificate Verification++++++++");
        PublicKey pk = c.getPublicKey();
        c.verify(pk);....//63
System.out.println("++This certificate is VALID++");
    .....

    }
    catch(CertificateException e){
                e.printStackTrace();
                System.out.println("Certificate is Invalid");
            }

但是,我一直收到以下错误

java.security.SignatureException: Signature does not match.
    at sun.security.x509.X509CertImpl.verify(Unknown Source)
    at sun.security.x509.X509CertImpl.verify(Unknown Source)
    at Main.printCertificate(Main.java:63)
    at Main.main(Main.java:41)

我只提供了证书文件(我需要验证),私钥(对应上述文件)和CA证书。 我是Java Security的新手。所以关于如何验证证书文件的任何想法都会很棒。

1 个答案:

答案 0 :(得分:3)

好吧,我终于明白了。对于将来可能会到达这里的人们。 抛出错误的原因是我的案例中的证书不是self signed。因此,我只需使用CA颁发的证书(如我的Q中所述)来验证公钥。 其余的保持不变。