java - 如何在 Java 中使用 .cer 文件验证证书

标签 java security jakarta-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 安全性很陌生。因此,关于如何验证证书文件的任何想法都会很棒。

最佳答案

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

关于java - 如何在 Java 中使用 .cer 文件验证证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15818782/

相关文章:

java - 使用 gradle 从 java 项目中删除未使用的导入

java - 在java中将无符号32位整数转换为长度为4字节的字节数组,反之亦然

java - 如何去 listview 适配器项目单击监听器到 android 中的 fragment ?

java - 多线程环境下的 Shiro

php - 在主要受限用户而不是 www-data 下运行 PHP 安全吗?

spring - Shiro 和 CAS 如何使用不同的域进行身份验证和授权?

java - org.apache.jasper.JasperException

java - 哪些版本的相关技术适用于J2EE 1.4、5和6?

java - 在java中将File对象写入文件

java - @Singleton @Startup 依赖于@Stateless EJB