3

我試圖驗證證書,這是給我使用Java,通過以下方式如何使用.CER文件驗證證書在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安全性頗爲陌生。所以,關於如何驗證證書文件的任何想法都會很棒。

回答

3

嗯,我終於明白了。對於未來可能到達這裏的人們。 錯誤發生的原因是我的證書不是self signed。因此,我只需使用CA頒發的證書(如我Q中所述)來驗證公鑰。其餘的保持不變。